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).