暗号化とネットワーク パケット サイズを使用するように構成された SQL サーバー上の SSIS パッケージのエラー
この記事は、暗号化された接続とネットワーク パケット サイズ オプションを使用するようにSQL Serverを構成するときに発生する問題を解決するのに役立ちます。
元の製品バージョン: SQL Server
元の KB 番号: 2006769
現象
SQL Server環境では、次のシナリオを検討してください。
既定値 (4K) を超える ネットワーク パケット サイズ オプション を使用するように SQL サーバーを構成します。
このシナリオでは、次のことがわかります。
SSIS パッケージを MSDB パッケージ ストアに保存しようとすると、次のエラー メッセージが表示され、失敗します。
SaveToSQLServer メソッドで OLE DB エラー コード 0x80004005 (通信リンクエラー) が発生しました。発行された SQL ステートメントが失敗しました。
注:
また、SSIS パッケージとして SQL Server Management Studio で作成されたメンテナンス プランを MSDB データベースに保存する場合、この操作では本質的にSQL Serverへの接続に暗号化が使用されるため、上記のエラー メッセージが表示されます。
SSIS を使用するSQL Serverのデータ コレクター機能では、次に示すようにさまざまな問題が発生します。
- データ 収集セット ジョブは、ジョブ履歴に次のエラーを報告します。
dcexec: エラー: Main での内部エラー (理由: システムで指定されたファイルが見つかりません)。
dcexec: エラー: Main での内部エラー (理由: ハンドルが無効です)。- Data Collection Set を Data から直接実行すると、次のエラー メッセージが表示される場合があります。
パッケージ "Set_{7B191952-8ECF-4E12-AEB2-EF646EF79FEF}_Master_Package_Collection" に失敗しました。
データ コレクターのログを確認すると、次のようなエラー メッセージが表示されます。
SSIS エラー。 コンポーネント名: TaskForCollectionItem_1、コード: -1073602332、サブコンポーネント: (null)、説明: パッケージの読み込みの準備中にエラー 0xC0014062。 LoadFromSQLServer メソッドで OLE DB エラー コード 0x80004005 (通信リンクエラー) が発生しました。 発行された SQL ステートメントが失敗しました。
この問題は、このセクションで説明する条件 (暗号化と大きなパケット サイズ) の両方が当てはまる場合に、 Application.LoadFromSqlServer(String、String、String、String、IDTSEvents) メソッド または Application.SaveToSqlServer(Package, IDTSEvents, String, String) メソッド を使用する操作で発生する可能性があります。
原因
Secure Socket Layer (SSL) とその置き換えであるトランスポート層セキュリティ (TLS) は、データ フラグメントのサイズを 16k (16384) に制限します。 これは、パブリック RFC 2246 (セクション 6.2.2) に記載されており、ネットワーク プロトコルの現在の実装 と TDS エンドポイント レイヤーはこの仕様に準拠しています。 そのため、SQL Serverで暗号化が有効になっている環境で 16k を超えるネットワーク パケット サイズを使用すると、「現象」セクションで説明されているエラーが発生します。
解決方法
この問題を解決するには、16,384 バイト以下のネットワーク パケット サイズを指定します。 次のコードを使用して、 network packet size
システム ストアド プロシージャの構成オプションを sp_configure
設定できます。
注:
MARS が有効になっている場合、SMUX プロバイダーは SSL 暗号化の前に 16 バイトのヘッダーをパケットに追加し、最大ネットワーク パケット サイズを 16368 バイトに減らします。
EXEC sp_configure 'network packet size', 16368
RECONFIGURE WITH OVERRIDE
GO
ネットワーク パケット サイズは、オブジェクト エクスプローラーの [サーバーのプロパティ] ページで変更することもできます。 [ 詳細 ] オプションを選択し、[ ネットワーク パケット サイズ ] に新しい値を入力し、[OK] をクリック します。
注:
変更を有効にするためにSQL Serverを再起動する必要はありません。 この設定を変更すると、すべての新しい接続が新しい値を受け取ります。
詳細
再現する手順
sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
データ コレクターがインストールされていることを確認します。
[ネットワーク パケット サイズ] を 16K より大きい値に設定します。
オブジェクト エクスプローラー (OE) で [データ収集] を右クリックし、[データ収集を無効にする] をクリックします。
OE で [データ収集 ] を右クリックし、[ データ収集を有効にする] を選択します。
コレクション セットで [サーバー アクティビティ ] を右クリックし、[ データ コレクション セットの開始] を選択します。
エラーを取得するには、[ サーバー アクティビティ ] を右クリックし、[ Collect and Upload Now]\(今すぐ収集してアップロード\) を選択します。 (DC ログにはエラーが詳細に表示されます)。