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