sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man ställer in standardspråket för alla nya inloggningar i SQL Server (T-SQL)

Varje gång du skapar en ny inloggning i SQL Server kan du välja att tilldela ett standardspråk till den inloggningen. Om du inte gör detta kommer inloggningen att använda standardspråket enligt konfigurationsalternativet för standardspråkservern.

Den här artikeln visar hur du ställer in standardspråkserverkonfigurationsalternativet i SQL Server med T-SQL.

Kontrollera först serverns standardspråkinställningar

Innan vi går vidare och ändrar något, bör vi kontrollera vad de nuvarande inställningarna är.

Den sp_configure lagrad procedur låter dig se eller ändra globala konfigurationsinställningar för den aktuella servern.

För att returnera alla konfigurationsalternativ kan du utföra denna lagrade procedur utan att skicka några argument. Så här:

EXEC sp_configure;

Det ger dock en ganska stor resultatuppsättning.

Eftersom vi bara är intresserade av standardspråkinställningen kan vi köra följande kod:

EXEC sp_configure @configname='default language';

Och på min testmiljö returnerar det följande:

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

De viktigaste värdena vi är intresserade av är config_value och run_value . I det här fallet är båda värdena 0 , vilket är språk-ID för us_english .

Vi kan ändra dem med följande kod:

EXEC sp_configure 'default language', 5;
RECONFIGURE;

Resultat:

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

Observera att värdena för config_value och run_value är inte automatiskt likvärdiga. Efter att ha uppdaterat en konfigurationsinställning med sp_configure måste du uppdatera run_value genom att använda antingen RECONFIGURE eller RECONFIGURE WITH OVERRIDE . Med tanke på att vi redan har gjort det i det här exemplet är vi redo.

Så när vi kontrollerar inställningarna igen kan vi se de nya värdena:

EXEC sp_configure @configname='default language';

Resultat:

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

I det här fallet ändrade vi värdena till 5 , vilket är språk-ID för Español (spanska).

Du kan också fråga efter sys.configurations visa för att returnera värdena för serverkonfigurationsalternativen om du föredrar det.

Hur du hittar språk-ID:t

Om du inte känner till språk-ID:t för språket du behöver ändra till kan du köra sp_helplanguage lagrad procedur. Du kan köra det utan argument, i vilket fall alla språk kommer att returneras, eller så kan du ange ett språknamn eller alias så att endast det språket returneras.

Här är ett exempel:

EXEC sp_helplanguage Spanish;

Här är resultatet jag får när jag kör 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

Och vi kan se att språk-ID för spanska är 5 . Så det är värdet vi tillhandahåller när vi kör sp_configure för att ändra standardspråket till spanska.

Så nu när vi skapar en ny inloggning kommer dess standardspråk att vara spanska (såvida vi inte uttryckligen tillhandahåller ett standardspråk när vi skapar inloggningen).

Skapa en ny inloggning – utan att ange standardspråk

Så låt oss skapa en ny inloggning utan att ange ett standardspråk:

CREATE LOGIN Julio   
    WITH PASSWORD = 't35Tin9345!'

Och kontrollera nu standardspråket för den inloggningen:

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

Vi får följande resultat:

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

Eftersom vi inte har angett ett standardspråk för denna inloggning, använder den standardspråket som konfigurerats på servernivå.

Skapa en ny inloggning – med ett standardspråk

Men om vi anger ett standardspråk när vi skapar inloggningen:

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

Och fråga sedan sys.server_principals igen:

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

Vi får följande resultat:

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

Så serverkonfigurationen används bara när du inte uttryckligen anger ett standardspråk för den individuella inloggningen.

Observera att en användare kan ändra språket som används under sin session. Bara för att de har ett standardspråk betyder det inte att de har fastnat med det. För mer information, se 3 sätt att få språket för den aktuella sessionen i SQL Server (T-SQL) och Hur du ställer in det aktuella språket i SQL Server (T-SQL).


  1. Förstå SQL Server ALTER TABLE ADD COLUMN Statement

  2. T-SQL delad sträng baserad på avgränsare

  3. Viktig PostgreSQL-övervakning - Del 2

  4. Membership.ValidateUser returnerar alltid false efter uppgradering till VS 2010 / .NET 4.0