SQL Serverで新しいログインを作成するたびに、そのログインにデフォルトの言語を割り当てることができます。これを行わない場合、ログインはデフォルト言語サーバー構成オプションで指定されたデフォルト言語を使用します。
この記事では、T-SQLを使用して、SQLServerでデフォルトの言語サーバー構成オプションを設定する方法について説明します。
まず、サーバーのデフォルトの言語設定を確認します
先に進んで何かを変更する前に、現在の設定が何であるかを確認する必要があります。
sp_configure
ストアドプロシージャを使用すると、現在のサーバーのグローバル構成設定を表示または変更できます。
すべての構成オプションを返すには、引数を渡さずにこのストアドプロシージャを実行できます。このように:
EXEC sp_configure;
ただし、それは非常に大きな結果セットを返します。
デフォルトの言語設定のみに関心があるため、次のコードを実行できます。
EXEC sp_configure @configname='default language';
そして、私のテスト環境では、次のようになります。
+------------------+-----------+-----------+----------------+-------------+ | name | minimum | maximum | config_value | run_value | |------------------+-----------+-----------+----------------+-------------| | default language | 0 | 9999 | 0 | 0 | +------------------+-----------+-----------+----------------+-------------+
関心のある主な値はconfig_value
です およびrun_value
。この場合、両方の値は0
です。 、us_english
の言語IDです 。
次のコードを使用して変更できます:
EXEC sp_configure 'default language', 5; RECONFIGURE;
結果:
Configuration option 'default language' changed from 0 to 5. Run the RECONFIGURE statement to install.
config_value
の値に注意してください およびrun_value
自動的に同等ではありません。 sp_configure
を使用して構成設定を更新した後 、run_value
を更新する必要があります RECONFIGURE
のいずれかを使用する またはRECONFIGURE WITH OVERRIDE
。この例ではすでにそれを行っているので、準備はできています。
したがって、設定をもう一度確認すると、新しい値が表示されます。
EXEC sp_configure @configname='default language';
結果:
+------------------+-----------+-----------+----------------+-------------+ | name | minimum | maximum | config_value | run_value | |------------------+-----------+-----------+----------------+-------------| | default language | 0 | 9999 | 5 | 5 | +------------------+-----------+-----------+----------------+-------------+
この場合、値を5
に変更しました 、Español
の言語IDです (スペイン語)。
sys.configurations
にクエリを実行することもできます 必要に応じて、サーバー構成オプションの値を返すように表示します。
言語IDを見つける方法
変更する必要のある言語の言語IDがわからない場合は、sp_helplanguage
を実行できます。 ストアドプロシージャ。引数なしで実行できます。その場合、すべての言語が返されます。または、言語名またはエイリアスを指定して、その言語のみが返されるようにすることもできます。
次に例を示します:
EXEC sp_helplanguage Spanish;
これを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
また、スペイン語の言語IDは5
であることがわかります。 。これが、sp_configure
を実行するときに提供する値です。 デフォルトの言語をスペイン語に変更します。
したがって、新しいログインを作成するとき、そのデフォルト言語はスペイン語になります(ログインを作成するときにデフォルト言語を明示的に指定しない限り)。
新しいログインを作成する–デフォルトの言語を指定せずに
それでは、デフォルトの言語を指定せずに新しいログインを作成しましょう:
CREATE LOGIN Julio WITH PASSWORD = 't35Tin9345!'
次に、そのログインのデフォルト言語を確認します:
SELECT default_language_name FROM master.sys.server_principals WHERE name = 'Julio';
次の結果が得られます:
+-------------------------+ | default_language_name | |-------------------------| | Español | +-------------------------+
このログインにはデフォルトの言語を指定しなかったため、サーバーレベルで構成されたデフォルトの言語を使用します。
新しいログインを作成する–デフォルトの言語で
ただし、ログインを作成するときにデフォルトの言語を指定すると、次のようになります。
CREATE LOGIN Einstein WITH PASSWORD = 't35Tin9345!', DEFAULT_LANGUAGE = German;
次に、sys.server_principals
にクエリを実行します もう一度:
SELECT default_language_name FROM master.sys.server_principals WHERE name = 'Einstein';
次の結果が得られます:
+-------------------------+ | default_language_name | |-------------------------| | German | +-------------------------+
したがって、サーバー構成は、個々のログインのデフォルト言語を明示的に指定しない場合にのみ使用されます。
ユーザーは、セッション内で使用されている言語を変更できることに注意してください。彼らがデフォルトの言語を持っているからといって、それは彼らがそれに固執しているという意味ではありません。詳細については、「SQL Server(T-SQL)で現在のセッションの言語を取得する3つの方法」および「SQLServer(T-SQL)で現在の言語を設定する方法」を参照してください。