ALTER SERVER CONFIGURATION (Transact-SQL)

適用対象:SQL Server

SQL Server で現在のサーバーのグローバル構成設定を変更します。

Transact-SQL 構文表記規則

構文

ALTER SERVER CONFIGURATION  
SET <optionspec>   
[;]  
  
<optionspec> ::=  
{  
     <process_affinity>  
   | <diagnostic_log>  
   | <failover_cluster_property>  
   | <hadr_cluster_context>  
   | <buffer_pool_extension>  
   | <soft_numa>  
   | <memory_optimized>
   | <hardware_offload>
   | <suspend_for_snapshot_backup>
}  
  
<process_affinity> ::=   
   PROCESS AFFINITY   
   {  
     CPU = { AUTO | <CPU_range_spec> }   
   | NUMANODE = <NUMA_node_range_spec>   
   }  
   <CPU_range_spec> ::=   
      { CPU_ID | CPU_ID  TO CPU_ID } [ ,...n ]   
  
   <NUMA_node_range_spec> ::=   
      { NUMA_node_ID | NUMA_node_ID TO NUMA_node_ID } [ ,...n ]  
  
<diagnostic_log> ::=   
   DIAGNOSTICS LOG   
   {   
     ON    
   | OFF    
   | PATH = { 'os_file_path' | DEFAULT }    
   | MAX_SIZE = { 'log_max_size' MB | DEFAULT }    
   | MAX_FILES = { 'max_file_count' | DEFAULT }    
   }  
  
<failover_cluster_property> ::=   
   FAILOVER CLUSTER PROPERTY <resource_property>  
   <resource_property> ::=  
      {  
        VerboseLogging = { 'logging_detail' | DEFAULT }    
      | SqlDumperDumpFlags = { 'dump_file_type' | DEFAULT }  
      | SqlDumperDumpPath = { 'os_file_path'| DEFAULT }  
      | SqlDumperDumpTimeOut = { 'dump_time-out' | DEFAULT }  
      | FailureConditionLevel = { 'failure_condition_level' | DEFAULT }  
      | HealthCheckTimeout = { 'health_check_time-out' | DEFAULT }  
      }  
  
<hadr_cluster_context> ::=  
   HADR CLUSTER CONTEXT = { 'remote_windows_cluster' | LOCAL }  
  
<buffer_pool_extension>::=  
    BUFFER POOL EXTENSION   
    { ON ( FILENAME = 'os_file_path_and_name' , SIZE = <size_spec> )   
    | OFF }  
  
    <size_spec> ::=  
        { size [ KB | MB | GB ] }  
  
<soft_numa> ::=  
    SOFTNUMA  
    { ON | OFF }  

<memory-optimized> ::=   
   MEMORY_OPTIMIZED   
   {   
     ON 
   | OFF
   | [ TEMPDB_METADATA = { ON [(RESOURCE_POOL='resource_pool_name')] | OFF }
   | [ HYBRID_BUFFER_POOL = { ON | OFF }
   }  

<hardware_offload> ::=
   HARDWARE_OFFLOAD
   {   
     ON 
   | OFF
   }

<suspend_for_snapshot_backup> ::=
    SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF } [ ( GROUP = ( <database>,...n) [ , MODE = COPY_ONLY ] ) ]

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

<process_affinity> ::=

PROCESS AFFINITY
CPU へのハードウェア スレッドの関連付けを有効にします。

CPU = { AUTO | <CPU_range_spec> }
指定された範囲内の個々の CPU に SQL Server のワーカー スレッドを配分します。 指定された範囲外の CPU にはスレッドの割り当ては行われません。

AUTO
CPU へのスレッドの割り当てを一切行いません。 サーバーのワークロードに基づいて、オペレーティング システムが複数の CPU 間で自由にスレッドを移動できます。 これは既定の設定であり、推奨されます。

<CPU_range_spec> ::=
スレッドを割り当てる CPU または CPU の範囲を指定します。

{ CPU_ID | CPU_ID TO CPU_ID } [ ,...n ]
1 つ以上の CPU の一覧を指定します。 CPU ID は 0 から始まる integer 値です。

NUMANODE = <NUMA_node_range_spec>
指定された NUMA ノードまたはノードの範囲に属しているすべての CPU にスレッドを割り当てます。

<NUMA_node_range_spec> ::=
NUMA ノードまたは NUMA ノードの範囲を指定します。

{ NUMA_node_ID | NUMA_node_ID TO NUMA_node_ID } [ ,...n ]
1 つ以上の NUMA ノードの一覧を指定します。 NUMA ノード ID は 0 から始まる integer 値です。

<diagnostic_log> ::=

適用対象: SQL Server (SQL Server 2012 (11.x) 以降)。

DIAGNOSTICS LOG
sp_server_diagnostics プロシージャがキャプチャする診断データのログ記録を開始または停止します。 また、この引数はログ ファイルのロールオーバー回数、ログ ファイルのサイズ、ファイルの場所などの SQLDIAG ログ構成パラメーターを設定します。 詳細については、「 フェールオーバー クラスター インスタンスの診断ログを表示して読む方法」を参照してください。

ON
PATH ファイル オプションで指定された場所に SQL Server による診断データのログ記録を開始します。 この引数が既定値です。

OFF
診断データのログ記録を停止します。

PATH = { 'os_file_path' | DEFAULT }
診断ログの場所を示すパス。 既定の場所は、SQL Server フェールオーバー クラスター インスタンスのインストール フォルダー内の <\MSSQL\Log> です。

MAX_SIZE = { 'log_max_size' MB | DEFAULT }
各診断ログの最大サイズ (MB 単位)。 既定値は 100 MB です。

MAX_FILES = { 'max_file_count' | DEFAULT }
新しい診断ログとして再利用されるまでにコンピューターに格納できる診断ログ ファイルの最大数。

<failover_cluster_property> ::=

適用対象: SQL Server (SQL Server 2012 (11.x) 以降)。

FAILOVER CLUSTER PROPERTY
SQL Server リソース プライベート フェールオーバー クラスターのプロパティを変更します。

VERBOSE LOGGING = { 'logging_detail' | DEFAULT }
SQL Server フェールオーバー クラスタリングのログ記録レベルを設定します。 オンにすると、トラブルシューティングを目的とした詳細情報をエラー ログに追加できます。

  • 0: ログ記録はオフです (既定)

  • 1: エラーのみ。

  • 2: エラーおよび警告

リソース フェールオーバーのシナリオでは、フェールオーバーが発生する前に、SQL Server リソース DLL でダンプ ファイルを取得できます。 これは、FCI と可用性グループの両方のテクノロジに当てはまります。 SQL Server リソース DLL で SQL Server リソースが失敗したと判断した場合、SQL Server リソース DLL では Sqldumper.exe ユーティリティを使用して、SQL Server プロセスのダンプ ファイルを取得します。 リソース フェールオーバー時に、確実に Sqldumper.exe ユーティリティによってダンプ ファイルが正常に生成されるようにするには、次の 3 つのプロパティを前提条件として設定する必要があります: SqlDumperDumpTimeOut、SqlDumperDumpPath、SqlDumperDumpFlags。

SQLDUMPEREDUMPFLAGS
SQL Server の SQLDumper ユーティリティによって生成されるダンプ ファイルの種類を決定します。 既定の設定は 0 です。 この設定には、16 進数ではなく、10 進数の値が使用されます。 ミニ ダンプでは 288 を使用し、間接メモリのミニ ダンプでは 296 を使用し、フィルター処理されたダンプでは 33024 を使用します。 詳細については、SQL Server Dumper ユーティリティに関するサポート技術情報の資料を参照してください。

SQLDUMPERDUMPPATH = { 'os_file_path' | DEFAULT }
SQLDumper ユーティリティがダンプ ファイルを保存する場所。 詳細については、SQL Server Dumper ユーティリティに関するサポート技術情報の資料を参照してください。

SQLDUMPERDUMPTIMEOUT = { 'dump_time-out' | DEFAULT }
SQL Server でエラーが発生した場合の、SQLDumper ユーティリティによるダンプの生成のタイムアウト値 (ミリ秒単位)。 既定値は 0 で、ダンプの完了に時間制限がないことを示します。 詳細については、SQL Server Dumper ユーティリティに関するサポート技術情報の資料を参照してください。

FAILURECONDITIONLEVEL = { 'failure_condition_level' | DEFAULT }
SQL Server フェールオーバー クラスター インスタンスのフェールオーバーまたは再起動が必要になる状態。 既定値は 3 で、重大なサーバー エラーの発生時に SQL Server リソースがフェールオーバーまたは再起動することを示します。 このエラー状態レベルおよび他のエラー状態レベルについて詳しくは、「FailureConditionLevel プロパティ設定の構成」をご覧ください。

HEALTHCHECKTIMEOUT = { 'health_check_time-out' | DEFAULT }
SQL Server データベース エンジンのリソース DLL が、サーバーの状態情報を待機する時間のタイムアウト値です。この待機時間を経過すると、SQL Server のインスタンスが応答不能と見なされます。 このタイムアウト値は、ミリ秒単位で指定します。 既定値は 60,000 ミリ秒 (60 秒) です。

<hadr_cluster_context> ::=

適用対象: SQL Server (SQL Server 2012 (11.x) 以降)。

HADR CLUSTER CONTEXT = { 'remote_windows_cluster' | LOCAL }
サーバー インスタンスの HADR クラスター コンテキストを、指定した Windows Server フェールオーバー クラスター (WSFC) に切り替えます。 HADR クラスター コンテキストは、サーバー インスタンスによってホストされる可用性レプリカのメタデータを管理する WSFC を決定します。 SET HADR CLUSTER CONTEXT オプションは、Always On 可用性グループ を新しい WSFC 上の SQL Server 2012 SP1 (11.0.3x) 以降のバージョンのインスタンスに移行するクラスター間での移行中にのみ使用してください。

HADR クラスター コンテキストの切り替えは、ローカル WSFC とリモート WSFC 間でのみ実行できます。 その後、リモート WSFC からローカル WSFC に切り戻すことができます。 HADR クラスター コンテキストは、SQL Server インスタンスが可用性レプリカをホストしていない場合のみリモート クラスターに切り替えることができます。

リモート HADR クラスター コンテキストは、いつでもローカル クラスターに切り替えることができます。 ただし、コンテキストは、サーバー インスタンスが可用性レプリカをホストしている限り、再度切り替えることはできません。

切り替え先のクラスターを識別するには、次のいずれかの値を指定します。

windows_cluster
WSFC のネットワーク名。 短い名前または完全なドメイン名を指定できます。 短い名前のターゲット IP アドレスを検出するために、ALTER SERVER CONFIGURATION は DNS 解決を使用します。 状況によっては、短い名前を使用すると混乱が生じ、DNS から誤った IP アドレスが返されることがあります。 完全なドメイン名を指定することをお勧めします。

注意

この設定を使用したクラスター間の移行はサポートされなくなりました。 クラスター間の移行を実行するには、分散可用性グループまたは他の方法 (ログ配布など) を使用します。

LOCAL
ローカル WSFC。

詳細については、「サーバー インスタンスの HADR クラスター コンテキストの変更 (SQL Server)」をご覧ください。

<buffer_pool_extension>::=

適用対象: SQL Server (SQL Server 2014 (12.x) 以降)。

ON
バッファー プール拡張オプションを有効にします。 このオプションは不揮発性記憶域を使用してバッファー プールのサイズを拡張します。 ソリッドステート ドライブ (SSD) などの不揮発性記憶域はプール内にクリーンなデータ ページを保持します。 この機能の詳細については、「バッファー プール拡張」を参照してください。バッファー プール拡張機能は、すべての SQL Server エディションで使用できるとは限りません。 詳しくは、「SQL Server 2022 の各エディションとサポートされている機能」を参照してください。

FILENAME = 'os_file_path_and_name'
バッファー プール拡張キャッシュ ファイルのディレクトリ パスと名前を定義します。 ファイル拡張子は .BPE と指定する必要があります。 FILENAME を変更する前に BUFFER POOL EXTENSION を無効にします。

SIZE = size [ KB | MB | GB ]
キャッシュのサイズを定義します。 既定のサイズの指定は KB です。 最小サイズは最大サーバー メモリのサイズです。 最大値は最大サーバー メモリのサイズの 32 倍です。 最大サーバー メモリの詳細については、「sp_configure (Transact-SQL)」を参照してください。

ファイルのサイズを変更する前に BUFFER POOL EXTENSION を無効にします。 現在のサイズより小さいサイズを指定するには、SQL Server のインスタンスを再起動してメモリを再利用する必要があります。 これを行わない場合は、現在のサイズのままにしておくか、現在のサイズより大きいサイズを指定する必要があります。

OFF
バッファー プール拡張オプションを無効にします。 ファイルのサイズや名前など、関連するパラメーターを変更する場合は、事前にバッファー プール拡張オプションを無効にします。 このオプションを無効にすると、関連するすべての構成情報がレジストリから削除されます。

警告

バッファー プール拡張を無効にすると、バッファー プールのサイズが大幅に縮小されるため、サーバー パフォーマンスにマイナスの影響がある場合があります。

<soft_numa>

適用対象: SQL Server (SQL Server 2016 (13.x) 以降)。

ON
大きい NUMA ハードウェア ノードを小さい NUMA ノードに分割する自動パーティション分割を有効にします。 実行中の値を変更するには、データベース エンジンの再起動が必要です。

OFF
大きい NUMA ハードウェア ノードの小さい NUMA ノードへの自動ソフトウェア パーティション分割を無効にします。 実行中の値を変更するには、データベース エンジンの再起動が必要です。

警告

ALTER SERVER CONFIGURATION ステートメントと SOFT NUMA オプションおよび SQL Server エージェントの動作に関しては既知の問題があります。 推奨される操作のシーケンスを次に示します。

  1. SQL Server エージェントのインスタンスを停止します。
  2. ALTER SERVER CONFIGURATION SOFT NUMA オプションを実行します。
  3. SQL Server インスタンスを再起動します。
  4. SQL Server エージェントのインスタンスを起動します。

詳細情報: SQL Server サービスが再起動する前に ALTER SERVER CONFIGURATION と SET SOFTNUMA コマンドを実行した場合、SQL Server エージェント サービスが停止するときに、エージェントは T-SQL RECONFIGURE コマンドを実行して、SOFTNUMA の設定を ALTER SERVER CONFIGURATION の前の状態に戻します。

<memory_optimized> ::=

適用対象: SQL Server (SQL Server 2019 (15.x) 以降)。

ON
メモリ内データベース機能ファミリの一部である、インスタンスレベルのすべての機能を有効にします。 これには現在、メモリ最適化 tempdb メタデータハイブリッド バッファー プールが含まれます。 有効にするには再起動が必要です。

OFF
メモリ内データベース機能ファミリの一部である、インスタンスレベルのすべての機能を無効にします。 有効にするには再起動が必要です。

TEMPDB_METADATA = ON | OFF
メモリ最適化 tempdb メタデータのみを有効または無効にします。 有効にするには再起動が必要です。

RESOURCE_POOL='resource_pool_name'
TEMPDB_METADATA = ON と組み合わせて使用することで、tempdb 用に使用する必要があるユーザー定義リソース プールを指定します。 指定しない場合、tempdb には既定のプールが使用されます。 プールは既に存在している必要があります。 サービスが再起動されたときにプールが使用できない場合、tempdb には既定のプールが使用されます。

HYBRID_BUFFER_POOL = ON | OFF
インスタンス レベルでのハイブリッド バッファー プールを有効または無効にします。 有効にするには再起動が必要です。

<hardware_offload> ::=

適用対象: SQL Server (SQL Server 2022 (16.x) 以降)。

ON
インスタンスの統合アクセラレーションとオフロードの使用を有効にします。 再起動が必要です。

OFF
すべてのインスタンス レベルで統合アクセラレーションとオフロードの使用を無効にします。 有効にするには再起動が必要です。

詳細については、「統合アクセラレーションとオフロード」を参照してください。

<suspend_for_snapshot_backup> ::=

適用対象: SQL Server (SQL Server 2022 (16.x) 以降)

スナップショット バックアップのためにデータベースを一時停止します。 1 つ以上のデータベースのグループを定義できます。 コピーのみのモードを指定できます。

SET SUSPEND_FOR_SNAPSHOT_BACKUP = { ON | OFF }

データベースを一時停止または一時停止解除します。 既定値 オフ。

GROUP = ( <database>,...n)

省略可能。 一時停止する 1 つ以上のデータベースのグループを定義します。 指定しない場合、この設定はすべてのデータベースに適用されます。

MODE = COPY_ONLY

省略可能。 すべてのデータベース バックアップには COPY_ONLY モードを使用します。

全般的な解説

このステートメントでは、明記されていない限り、SQL Server の再起動は必要ありません。 SQL Server フェールオーバー クラスター インスタンスの場合、SQL Server クラスター リソースを再起動する必要はありません。

制限事項と制約事項

このステートメントは、DDL トリガーをサポートしません。

アクセス許可

必須:

  • プロセス関係オプションに対する ALTER SETTINGS 権限。
  • 診断ログとフェールオーバー クラスター プロパティのオプションに対する ALTER SETTINGS 権限と VIEW SERVER STATE 権限。
  • HADR クラスター コンテキスト オプションに対する CONTROL SERVER 権限。
  • バッファー プール拡張オプションに対する ALTER SERVER STATE 権限。

SQL Server データベース エンジンのリソース DLL は、ローカル システム アカウントで実行されます。 そのため、ローカル システム アカウントには、診断ログ オプションで指定されたパスに対する読み取りアクセス権と書き込みアクセス権が必要です。

カテゴリ 主な構文要素
プロセス関係を設定する CPU、NUMANODE、AUTO
診断ログ オプションを設定する ON • OFF • PATH • MAX_SIZE
フェールオーバー クラスター プロパティを設定する HealthCheckTimeout
可用性レプリカのクラスター コンテキストを変更する 'windows_cluster'
バッファー プール拡張を設定する バッファー プール拡張
メモリ内データベース オプションの設定 MEMORY_OPTIMIZED

プロセス関係を設定する

このセクションの例では、CPU および NUMA ノードにプロセス関係を設定する方法を示します。 この例では、256 個の CPU が、4 つのグループから成る NUMA ノード構成 (4 グループ合計 16 ノード) でサーバーに搭載されていることを想定しています。 スレッドは NUMA ノードにも CPU にも割り当てられていません。

  • グループ 0:NUMA ノード 0 から 3、CPU 0 から 63
  • グループ 1:NUMA ノード 4 から 7、CPU 64 から 127
  • グループ 2:NUMA ノード 8 から 12、CPU 128 から 191
  • グループ 3:NUMA ノード 13 から 16、CPU 192 から 255

A. グループ 0 とグループ 2 のすべての CPU に関係を設定する

次の例では、グループ 0 とグループ 2 のすべての CPU に関係を設定します。

ALTER SERVER CONFIGURATION   
SET PROCESS AFFINITY CPU=0 TO 63, 128 TO 191;  

B. NUMA ノード 0 と NUMA ノード 7 のすべての CPU に関係を設定する

次の例では、ノード 0 とノード 7 にのみ CPU 関係を設定します。

ALTER SERVER CONFIGURATION   
SET PROCESS AFFINITY NUMANODE=0, 7;  

C. CPU 60 ~ 200 に関係を設定する

次の例では、CPU 60 ~ 200 に関係を設定します。

ALTER SERVER CONFIGURATION   
SET PROCESS AFFINITY CPU=60 TO 200;  

D. CPU が 2 個搭載されたシステムの CPU 0 に関係を設定する

次の例では、CPU を 2 個搭載しているコンピューターの CPU=0 に関係を設定します。 次のステートメントを実行する前の内部関係ビットマスクは 00 です。

ALTER SERVER CONFIGURATION SET PROCESS AFFINITY CPU=0;  

E. 関係を AUTO に設定する

次の例では、関係を AUTO に設定します。

ALTER SERVER CONFIGURATION  
SET PROCESS AFFINITY CPU=AUTO;  

Setting diagnostic log options

適用対象: SQL Server (SQL Server 2012 (11.x) 以降)。

このセクションの例では、診断ログ オプションの値を設定する方法を示します。

A. 診断ログの記録を開始する

次の例では、診断データのログ記録を開始します。

ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG ON;  

B. 診断ログの記録を停止する

次の例では、診断データのログ記録を停止します。

ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG OFF;  

C. 診断ログの場所を指定する

次の例では、診断ログの場所を、指定されたファイル パスに設定します。

ALTER SERVER CONFIGURATION  
SET DIAGNOSTICS LOG PATH = 'C:\logs';  

D. 各診断ログの最大サイズを指定する

次の例では、各診断ログの最大サイズを 10 MB に設定します。

ALTER SERVER CONFIGURATION   
SET DIAGNOSTICS LOG MAX_SIZE = 10 MB;  

フェールオーバー クラスター プロパティを設定する

適用対象: SQL Server (SQL Server 2012 (11.x) 以降)。

次の例では、SQL Server フェールオーバー クラスター リソースのプロパティの値を設定します。

A. HealthCheckTimeout プロパティの値を指定する

次の例では、HealthCheckTimeout オプションを 15,000 ミリ秒 (15 秒) に設定します。

ALTER SERVER CONFIGURATION   
SET FAILOVER CLUSTER PROPERTY HealthCheckTimeout = 15000;  

B. 可用性レプリカのクラスター コンテキストを変更する

次の例では、SQL Server インスタンスの HADR クラスター コンテキストを変更します。 変更先の WSFC クラスターである clus01 を指定するため、この例では、完全なクラスター オブジェクト名である clus01.xyz.com を指定します。

ALTER SERVER CONFIGURATION SET HADR CLUSTER CONTEXT = 'clus01.xyz.com';  

バッファー プール拡張オプションを設定する

A. バッファー プール拡張オプションを設定する

適用対象: SQL Server (SQL Server 2014 (12.x) 以降)。

次の例では、バッファー プール拡張オプションを有効にし、ファイル名とサイズを指定します。

ALTER SERVER CONFIGURATION   
SET BUFFER POOL EXTENSION ON  
    (FILENAME = 'F:\SSDCACHE\Example.BPE', SIZE = 50 GB);  

B. バッファー プール拡張パラメーターを変更する

次の例は、バッファー プール拡張ファイルのサイズを変更します。 いずれかのパラメーターを変更する場合は、バッファー プール拡張オプションを事前に無効にする必要があります。

ALTER SERVER CONFIGURATION   
SET BUFFER POOL EXTENSION OFF;  
GO  
EXEC sp_configure 'max server memory (MB)', 12000;  
GO  
RECONFIGURE;  
GO  
ALTER SERVER CONFIGURATION  
SET BUFFER POOL EXTENSION ON  
    (FILENAME = 'F:\SSDCACHE\Example.BPE', SIZE = 60 GB);  
GO   

メモリ内データベース オプションの設定

適用対象: SQL Server (SQL Server 2019 (15.x) 以降)。

A. 既定のオプションを使用してすべてのメモリ内データベース機能を有効にする

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED ON;
GO

B. 既定のリソース プールを使用してメモリ最適化 tempdb メタデータを有効にする

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED TEMPDB_METADATA = ON;
GO

C. ユーザー定義のリソース プールを使用してメモリ最適化 tempdb メタデータを有効にする

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED TEMPDB_METADATA = ON (RESOURCE_POOL = 'pool_name');
GO

D. ハイブリッド バッファー プールを有効にする

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;
GO

参照

ソフト NUMA (SQL Server)
サーバー インスタンスの HADR クラスター コンテキストの変更 (SQL Server)
sys.dm_os_schedulers (Transact-SQL)
sys.dm_os_memory_nodes (Transact-SQL)
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)
バッファー プール拡張