sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan indstilles standardsproget for alle nye logins i SQL Server (T-SQL)

Hver gang du opretter et nyt login i SQL Server, har du valget mellem at tildele et standardsprog til det pågældende login. Hvis du ikke gør dette, vil login bruge standardsproget som angivet i standardsprogserverens konfigurationsindstilling.

Denne artikel viser, hvordan du indstiller standardsprogserverkonfigurationen i SQL Server ved hjælp af T-SQL.

Tjek først serverens standardsprogindstillinger

Før vi går videre og ændrer noget, bør vi tjekke for at se, hvad de aktuelle indstillinger er.

 sp_configure gemt procedure giver dig mulighed for at se eller ændre globale konfigurationsindstillinger for den aktuelle server.

For at returnere alle konfigurationsmuligheder kan du udføre denne lagrede procedure uden at sende nogen argumenter. Sådan:

EXEC sp_configure;

Det giver dog et ret stort resultatsæt.

Da vi kun er interesseret i standardsprogindstillingen, kan vi køre følgende kode:

EXEC sp_configure @configname='default language';

Og på mit testmiljø returnerer det følgende:

+------------------+-----------+-----------+----------------+-------------+
| name             | minimum   | maximum   | config_value   | run_value   |
|------------------+-----------+-----------+----------------+-------------|
| default language | 0         | 9999      | 0              | 0           |
+------------------+-----------+-----------+----------------+-------------+

De vigtigste værdier, vi er interesserede i, er config_value og run_value . I dette tilfælde er begge værdier 0 , som er sprog-id'et for us_english .

Vi kan ændre dem ved at bruge følgende kode:

EXEC sp_configure 'default language', 5;
RECONFIGURE;

Resultat:

Configuration option 'default language' changed from 0 to 5. Run the RECONFIGURE statement to install. 

Bemærk, at værdierne for config_value og run_value er ikke automatisk ækvivalente. Efter opdatering af en konfigurationsindstilling ved at bruge sp_configure , skal du opdatere run_value ved at bruge enten RECONFIGURE eller RECONFIGURE WITH OVERRIDE . Da vi allerede har gjort det i dette eksempel, er vi klar til at gå.

Så når vi tjekker indstillingerne igen, kan vi se de nye værdier:

EXEC sp_configure @configname='default language';

Resultat:

+------------------+-----------+-----------+----------------+-------------+
| name             | minimum   | maximum   | config_value   | run_value   |
|------------------+-----------+-----------+----------------+-------------|
| default language | 0         | 9999      | 5              | 5           |
+------------------+-----------+-----------+----------------+-------------+

I dette tilfælde ændrede vi værdierne til 5 , som er sprog-id'et for Español (spansk).

Du kan også forespørge på sys.configurations view for at returnere værdierne for serverkonfigurationsindstillingerne, hvis du foretrækker det.

Sådan finder du sprog-id'et

Hvis du ikke kender sprog-id'et for det sprog, du skal skifte til, kan du udføre sp_helplanguage gemt procedure. Du kan køre det uden argumenter, i hvilket tilfælde alle sprog vil blive returneret, eller du kan angive et sprognavn eller alias, så kun det sprog returneres.

Her er et eksempel:

EXEC sp_helplanguage Spanish;

Her er resultatet, jeg får, når jeg kører det i mssql-cli:

-[ RECORD 1 ]-------------------------
langid      | 5
dateformat  | dmy
datefirst   | 1
upgrade     | 0
name        | Español
alias       | Spanish
months      | Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octub
shortmonths | Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic
days        | Lunes,Martes,Miércoles,Jueves,Viernes,Sábado,Domingo
lcid        | 3082
msglangid   | 3082

Og vi kan se, at sprog-id'et for spansk er 5 . Så det er den værdi, vi giver, når vi udfører sp_configure for at ændre standardsproget til spansk.

Så når vi nu opretter et nyt login, vil dets standardsprog være spansk (medmindre vi udtrykkeligt angiver et standardsprog, når vi opretter login).

Opret et nyt login – uden at angive standardsproget

Så lad os oprette et nyt login uden at angive et standardsprog:

CREATE LOGIN Julio   
    WITH PASSWORD = 't35Tin9345!'

Og tjek nu standardsproget for det login:

SELECT default_language_name 
FROM master.sys.server_principals
WHERE name = 'Julio';

Vi får følgende resultat:

+-------------------------+
| default_language_name   |
|-------------------------|
| Español                 |
+-------------------------+

Fordi vi ikke har angivet et standardsprog for dette login, bruger det standardsproget som konfigureret på serverniveau.

Opret et nyt login – med et standardsprog

Men hvis vi angiver et standardsprog, når vi opretter login:

CREATE LOGIN Einstein   
    WITH PASSWORD = 't35Tin9345!',
    DEFAULT_LANGUAGE = German;

Og forespørg derefter sys.server_principals igen:

SELECT default_language_name 
FROM master.sys.server_principals
WHERE name = 'Einstein';

Vi får følgende resultat:

+-------------------------+
| default_language_name   |
|-------------------------|
| German                  |
+-------------------------+

Så serverkonfigurationen bruges kun, når du ikke eksplicit angiver et standardsprog for det individuelle login.

Bemærk, at en bruger kan ændre det sprog, der bruges i deres session. Bare fordi de har et standardsprog, betyder det ikke, at de sidder fast med det. For mere information, se 3 måder at få sproget for den aktuelle session i SQL Server (T-SQL) og Sådan indstilles det aktuelle sprog i SQL Server (T-SQL).


  1. Guide til designdatabase til kalenderbegivenhed og påmindelse i MySQL

  2. tempdb-forbedringer i SQL Server 2019

  3. De bedste SQL Server Performance-fora til hjælp til de sværeste spørgsmål

  4. Sådan løses ude af stand til at skifte kodningsfejlen, når du indsætter XML i SQL Server