Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Festlegen der Standardsprache für alle neuen Anmeldungen in SQL Server (T-SQL)

Jedes Mal, wenn Sie eine neue Anmeldung in SQL Server erstellen, haben Sie die Möglichkeit, dieser Anmeldung eine Standardsprache zuzuweisen. Wenn Sie dies nicht tun, verwendet die Anmeldung die Standardsprache, die in der Standard-Sprachserver-Konfigurationsoption angegeben ist.

Dieser Artikel zeigt, wie Sie die Standard-Sprachserver-Konfigurationsoption in SQL Server mithilfe von T-SQL festlegen.

Überprüfen Sie zuerst die Standardspracheinstellungen des Servers

Bevor wir fortfahren und irgendetwas ändern, sollten wir überprüfen, was die aktuellen Einstellungen sind.

Die sp_configure Stored Procedure ermöglicht es Ihnen, globale Konfigurationseinstellungen für den aktuellen Server anzuzeigen oder zu ändern.

Um alle Konfigurationsoptionen zurückzugeben, können Sie diese gespeicherte Prozedur ausführen, ohne Argumente zu übergeben. So:

EXEC sp_configure;

Das gibt jedoch eine ziemlich große Ergebnismenge zurück.

Da wir nur an der Standardspracheinstellung interessiert sind, können wir den folgenden Code ausführen:

EXEC sp_configure @configname='default language';

Und in meiner Testumgebung gibt das Folgendes zurück:

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

Der Hauptwert, an dem wir interessiert sind, ist config_value und run_value . In diesem Fall sind beide Werte 0 , das ist die Sprach-ID für us_english .

Wir können diese mit dem folgenden Code ändern:

EXEC sp_configure 'default language', 5;
RECONFIGURE;

Ergebnis:

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

Beachten Sie, dass die Werte für config_value und run_value sind nicht automatisch gleichwertig. Nach dem Aktualisieren einer Konfigurationseinstellung mit sp_configure , müssen Sie run_value aktualisieren indem Sie entweder RECONFIGURE verwenden oder RECONFIGURE WITH OVERRIDE . Da wir das in diesem Beispiel bereits getan haben, können wir loslegen.

Wenn wir also die Einstellungen erneut überprüfen, können wir die neuen Werte sehen:

EXEC sp_configure @configname='default language';

Ergebnis:

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

In diesem Fall haben wir die Werte auf 5 geändert , das ist die Sprach-ID für Español (Spanisch).

Sie können auch die sys.configurations abfragen view, um die Werte der Serverkonfigurationsoptionen zurückzugeben, wenn Sie dies bevorzugen.

So finden Sie die Sprach-ID

Wenn Sie die Sprach-ID der Sprache, zu der Sie wechseln müssen, nicht kennen, können Sie die sp_helplanguage ausführen gespeicherte Prozedur. Sie können es ohne Argumente ausführen, in diesem Fall werden alle Sprachen zurückgegeben, oder Sie können einen Sprachnamen oder Alias ​​angeben, sodass nur diese Sprache zurückgegeben wird.

Hier ist ein Beispiel:

EXEC sp_helplanguage Spanish;

Hier ist das Ergebnis, das ich erhalte, wenn ich das in mssql-cli ausführe:

-[ 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

Und wir können sehen, dass die Sprach-ID für Spanisch 5 ist . Das ist also der Wert, den wir beim Ausführen von sp_configure bereitstellen um die Standardsprache auf Spanisch zu ändern.

Wenn wir also jetzt ein neues Login erstellen, ist seine Standardsprache Spanisch (es sei denn, wir geben beim Erstellen des Logins explizit eine Standardsprache an).

Ein neues Login erstellen – ohne Angabe der Standardsprache

Lassen Sie uns also ein neues Login erstellen, ohne eine Standardsprache anzugeben:

CREATE LOGIN Julio   
    WITH PASSWORD = 't35Tin9345!'

Und jetzt überprüfen Sie die Standardsprache für diese Anmeldung:

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

Wir erhalten das folgende Ergebnis:

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

Da wir für diese Anmeldung keine Standardsprache angegeben haben, verwendet sie die auf Serverebene konfigurierte Standardsprache.

Erstellen Sie ein neues Login – mit einer Standardsprache

Aber wenn wir beim Erstellen des Logins eine Standardsprache angeben:

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

Und fragen Sie dann sys.server_principals ab nochmal:

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

Wir erhalten das folgende Ergebnis:

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

Die Serverkonfiguration wird also nur verwendet, wenn Sie nicht explizit eine Standardsprache für die individuelle Anmeldung angeben.

Beachten Sie, dass ein Benutzer die verwendete Sprache innerhalb seiner Sitzung ändern kann. Nur weil sie eine Standardsprache haben, heißt das nicht, dass sie daran festhalten. Weitere Informationen finden Sie unter 3 Möglichkeiten zum Abrufen der Sprache der aktuellen Sitzung in SQL Server (T-SQL) und Festlegen der aktuellen Sprache in SQL Server (T-SQL).