network packet size (サーバー構成オプション) の構成

適用対象:SQL Server

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

注意

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

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

制限事項と制約事項

  • 暗号化された接続の最大ネットワーク パケット サイズは 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 AdventureWorks2022;
GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'network packet size', 6500;
GO
RECONFIGURE;
GO

詳細については、「サーバー構成オプション (SQL Server)」を参照してください。

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

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

クライアント ライブラリ オプション Default
ODBC SQL_ATTR_PACKET_SIZE サーバー側を使用
JDBC setPacketSize(int packetSize) 8000
ADO.NET - Microsoft.Data.SqlClient PacketSize 8000
ADO.NET - System.Data.SqlClient PacketSize 8000
OLEDB SSPROP_INIT_PACKETSIZE 0 (サーバー側を使用)

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

Note

アプリケーションの接続文字列にネットワーク パケット サイズの値が含まれている場合、その値は通信に使用されます。 接続文字列に値が含まれていない場合、ドライバーはネットワーク パケット サイズの既定値を使用します。 たとえば、前の表で説明したように、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 (MSOLEDBSQL) for SQL Server または最新の Microsoft ODBC Driver for SQL Server に切り替えてください。

関連項目