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