Elke keer dat u een nieuwe login aanmaakt in SQL Server, heeft u de keuze om een standaardtaal toe te wijzen aan die login. Als u dit niet doet, gebruikt de login de standaardtaal zoals gespecificeerd in de standaardtaalserverconfiguratieoptie.
Dit artikel laat zien hoe u de standaardtaalserverconfiguratie-optie in SQL Server instelt met behulp van T-SQL.
Controleer eerst de standaard taalinstellingen van de server
Voordat we verder gaan en iets veranderen, moeten we controleren wat de huidige instellingen zijn.
De sp_configure
Met de opgeslagen procedure kunt u de algemene configuratie-instellingen voor de huidige server bekijken of wijzigen.
Om alle configuratie-opties terug te geven, kunt u deze opgeslagen procedure uitvoeren zonder argumenten door te geven. Zoals dit:
EXEC sp_configure;
Dat levert echter een behoorlijk grote resultatenset op.
Aangezien we alleen geïnteresseerd zijn in de standaard taalinstelling, kunnen we de volgende code uitvoeren:
EXEC sp_configure @configname='default language';
En in mijn testomgeving levert dat het volgende op:
+------------------+-----------+-----------+----------------+-------------+ | name | minimum | maximum | config_value | run_value | |------------------+-----------+-----------+----------------+-------------| | default language | 0 | 9999 | 0 | 0 | +------------------+-----------+-----------+----------------+-------------+
De belangrijkste waarden waarin we geïnteresseerd zijn, is config_value
en run_value
. In dit geval zijn beide waarden 0
, wat de taal-ID is voor us_english
.
We kunnen deze wijzigen met de volgende code:
EXEC sp_configure 'default language', 5; RECONFIGURE;
Resultaat:
Configuration option 'default language' changed from 0 to 5. Run the RECONFIGURE statement to install.
Houd er rekening mee dat de waarden voor config_value
en run_value
zijn niet automatisch gelijkwaardig. Na het updaten van een configuratie-instelling met behulp van sp_configure
, moet u run_value
bijwerken met behulp van RECONFIGURE
of RECONFIGURE WITH OVERRIDE
. Aangezien we dat in dit voorbeeld al hebben gedaan, zijn we klaar om te gaan.
Dus als we de instellingen opnieuw controleren, kunnen we de nieuwe waarden zien:
EXEC sp_configure @configname='default language';
Resultaat:
+------------------+-----------+-----------+----------------+-------------+ | name | minimum | maximum | config_value | run_value | |------------------+-----------+-----------+----------------+-------------| | default language | 0 | 9999 | 5 | 5 | +------------------+-----------+-----------+----------------+-------------+
In dit geval hebben we de waarden gewijzigd in 5
, wat de taal-ID is voor Español
(Spaans).
U kunt ook de sys.configurations
. opvragen weergave om de waarden van de serverconfiguratie-opties te retourneren als u dat wilt.
Hoe de taal-ID te vinden
Als u de taal-ID niet weet van de taal waarnaar u moet overschakelen, kunt u de sp_helplanguage
uitvoeren opgeslagen procedure. Je kunt het uitvoeren zonder argumenten, in welk geval alle talen worden geretourneerd, of je kunt een taalnaam of alias opgeven zodat alleen die taal wordt geretourneerd.
Hier is een voorbeeld:
EXEC sp_helplanguage Spanish;
Dit is het resultaat dat ik krijg als ik dat in mssql-cli uitvoer:
-[ 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
En we kunnen zien dat de taal-ID voor Spaans 5
. is . Dus dat is de waarde die we bieden bij het uitvoeren van sp_configure
om de standaardtaal te wijzigen in Spaans.
Dus als we nu een nieuwe login maken, is de standaardtaal Spaans (tenzij we expliciet een standaardtaal opgeven bij het maken van de login).
Maak een nieuwe login aan – zonder de standaardtaal op te geven
Laten we dus een nieuwe login aanmaken zonder een standaardtaal op te geven:
CREATE LOGIN Julio WITH PASSWORD = 't35Tin9345!'
En controleer nu de standaardtaal voor die login:
SELECT default_language_name FROM master.sys.server_principals WHERE name = 'Julio';
We krijgen het volgende resultaat:
+-------------------------+ | default_language_name | |-------------------------| | Español | +-------------------------+
Omdat we geen standaardtaal hebben opgegeven voor deze aanmelding, wordt de standaardtaal gebruikt zoals geconfigureerd op serverniveau.
Maak een nieuwe login – met een standaardtaal
Maar als we een standaardtaal specificeren wanneer we de login aanmaken:
CREATE LOGIN Einstein WITH PASSWORD = 't35Tin9345!', DEFAULT_LANGUAGE = German;
En bevraag vervolgens sys.server_principals
nogmaals:
SELECT default_language_name FROM master.sys.server_principals WHERE name = 'Einstein';
We krijgen het volgende resultaat:
+-------------------------+ | default_language_name | |-------------------------| | German | +-------------------------+
Dus de serverconfiguratie wordt alleen gebruikt als je niet expliciet een standaardtaal specificeert voor de individuele login.
Merk op dat een gebruiker de taal die binnen zijn sessie wordt gebruikt, kan wijzigen. Alleen omdat ze een standaardtaal hebben, betekent dit niet dat ze eraan vastzitten. Voor meer informatie, zie 3 manieren om de taal van de huidige sessie in SQL Server (T-SQL) te krijgen en Hoe de huidige taal in SQL Server (T-SQL) in te stellen.