sql >> Database >  >> RDS >> Sqlserver

De standaardtaal instellen voor alle nieuwe aanmeldingen in SQL Server (T-SQL)

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.


  1. Load balancing met ProxySQL voor Percona XtraDB Cluster

  2. Spotlight Cloud gebruiken om blokkering van SQL Server op te lossen

  3. Hoe databasemetagegevens te verkrijgen

  4. Synchroniseer offline SQLite-database met online MySQL-database