サーバー構成: ネットワーク パケット サイズ

適用対象: SQL Server

この記事では、SQL Server Management Studio または Transact-SQL を network packet size 使用して SQL Server のサーバー構成オプションを構成する方法について説明します。 このオプションは network packet size 、ネットワーク全体で使用されるパケット サイズ (バイト単位) を設定します。 パケットとは、固定サイズのデータのチャンクで、クライアントとサーバー間で要求および結果を転送します。 既定のパケット サイズは 4,096 バイトです。

Note

パフォーマンスが向上することが確実でない限り、パケット サイズを変更しないでください。 多くのアプリケーションでは、既定のパケット サイズが最適です。

新しい設定は、サーバーを再起動しなくてもすぐに有効になります。

制限事項

暗号化された接続の最大ネットワーク パケット サイズは 16,383 バイトです。

Note

MARS が有効な場合、SMUX プロバイダーによって TLS 暗号化の前に 16 バイトのヘッダーがパケットに追加され、最大ネットワーク パケット サイズは 16,368 バイトに減ります。

推奨事項

このオプションは詳細設定オプションであるため、熟練したデータベース管理者または認定された SQL Server プロフェッショナルだけが変更するようにしてください。

アプリケーションで一括コピー操作を行ったり、大量の text 型または image 型のデータを送受信する場合は、パケット サイズを既定値より大きくすると、ネットワークの読み取りと書き込みの操作が少なくなるので効率が向上することがあります。 アプリケーションで送受信する情報量が少ない場合は、パケット サイズを 512 バイトに設定できます。これは、ほとんどのデータ転送に十分なサイズです。

異なるネットワーク プロトコルを使用しているシステムでは、最も一般的に使用されるプロトコル向けのサイズに network packet size を設定します。 ネットワーク プロトコルで大きなパケットがサポートされるときは、network packet size オプションを設定することでネットワーク パフォーマンスを向上できます。 クライアント アプリケーションはこの値をオーバーライドできます。

OLE DB 関数、ODBC (Open Database Connectivity) 関数、および DB-Library 関数を呼び出して、パケット サイズの変更を要求することもできます。 サーバーが要求されたパケット サイズをサポートできない場合、データベース エンジンは警告メッセージをクライアントに送信します。 状況によっては、パケット サイズを変更すると、次のような通信リンクエラーが発生する可能性があります。

Native Error: 233, no process is on the other end of the pipe.

アクセス許可

パラメーターなしで、または最初のパラメーターだけを指定して sp_configure を実行する権限は、既定ですべてのユーザーに付与されます。 両方のパラメーターを指定して sp_configure を実行し構成オプションを変更したり RECONFIGURE ステートメントを実行したりするには、ALTER SETTINGS サーバーレベル権限がユーザーに付与されている必要があります。 ALTER SETTINGS 権限は、sysadmin 固定サーバー ロールと serveradmin 固定サーバー ロールでは暗黙のうちに付与されています。

SQL Server Management Studio の使用 [SQL Server]

  1. オブジェクト エクスプローラーで、サーバーを右クリックし、 [プロパティ] をクリックします。

  2. [詳細設定] ノードを選びます。

  3. [ネットワーク][ネットワーク パケット サイズ] ボックスに値を指定します。

Transact-SQL の使用

  1. データベース エンジンに接続します。

  2. 標準バーから、 [新しいクエリ] を選択します。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 この例では、 sp_configure を使用して、 network packet size オプションの値を 6500 バイトに設定する方法を示します。

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'network packet size', 6500;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

詳しくは、「サーバー構成オプション」をご覧ください。

クライアント側でネットワーク パケット サイズを構成する

次の表は、SQL Server への接続に使用できる一部のデータ接続テクノロジの例と、クライアント アプリケーションでこれらを使用するときにネットワーク パケット サイズを制御する方法を示しています。 SQL Server への接続に使用できるさまざまなデータ接続テクノロジの完全な一覧については、Microsoft SQL Server へのクライアント プログラミングのホームページを参照してください

クライアント ライブラリ オプション 既定値
SQLSetConnectAttr 関数 SQL_ATTR_PACKET_SIZE サーバー側を使用
接続プロパティの設定 setPacketSize(int packetSize) 8000
ADO.NET - Microsoft.Data.SqlClient PacketSize 8000
ADO.NET - System.Data.SqlClient PacketSize 8000
初期化プロパティと承認プロパティ SSPROP_INIT_PACKETSIZE 0 (サーバー側を使用)

SQL Profiler で Audit Login イベントまたは ExistingConnection イベントを監視して、クライアント接続のネットワーク パケット サイズを決定できます。

アプリケーションの接続文字列にネットワーク パケット サイズの値が含まれている場合、その値は通信に使用されます。 接続文字列に値が含まれていない場合、ドライバーはネットワーク パケット サイズの既定値を使用します。 たとえば、前の表で説明したように、SqlClient アプリケーションでは既定のパケット サイズ 8000 が使用されますが、ODBC アプリケーションではサーバーで構成したパケット サイズが使用されます。

重要

SQL Server Native Client (SNAC と略されることがよくあります) は、SQL Server 2022 (16.x) と SQL Server Management Studio 19 (SSMS) から削除されました。 新しい開発では、SQL Server Native Client OLE DB プロバイダー (SQLNCLI または SQLNCLI11) と従来の Microsoft OLE DB Provider for SQL Server (SQLOLEDB) の両方は推奨されません。 今後、新しい Microsoft OLE DB Driver for SQL Server または最新 の Microsoft ODBC Driver for SQL Server に 切り替えます。