これが、この質問を修正するための私の最近の取り組みです。しかし今回は、Oded の記事Getting good Answers on StackOverflowで与えられた適切な助言に従うようにしています。
次のエラーの根本原因を特定する方法を見つける必要があります。
通信リンク障害
TCP プロバイダー: 指定されたネットワーク名は使用できなくなりました
一連の SSIS パッケージを実行しているときに、ときどきこのエラーが表示されます。このエラーは、以下から 1 つ以上のパッケージが実行されている場合に発生する可能性があります。
- SQL Server エージェント ジョブ
- バッチファイル
- BIDS からのデバッグ モード
表示される完全なエラー メッセージは次のとおりです。
SSIS エラー コード DTS_E_OLEDBERROR。OLE DB エラーが発生しました。エラー コード: 0x80004005。OLE DB レコードが利用可能です。ソース: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 説明: "通信リンク エラー"。OLE DB レコードが利用可能です。ソース: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 説明: "TCP プロバイダー: 指定されたネットワーク名は利用できなくなりました。".
SSIS エラー コード DTS_E_OLEDBERROR。OLE DB エラーが発生しました。エラー コード: 0x80004005。OLE DB レコードが利用可能です。ソース: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 説明: "TDS ストリームのプロトコル エラー"。OLE DB レコードが利用可能です。ソース: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 説明: "通信リンク エラー"。OLE DB レコードが利用可能です。ソース: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 説明: "TCP プロバイダー: 既存の接続がリモート ホストによって強制的に閉じられました。"
これは、私がどのように ETL プロセスを設計したかの概要です。
- 2 台のサーバー
- どちらも仮想マシン
- アプリケーション サーバー上で実行される SSIS パッケージ
- SQL Server データベースはデータベース サーバー上に存在します
OLE DB 接続マネージャーを使用して、アプリケーション サーバー上の SSIS パッケージからデータベース サーバー上の SQL Server データベースに接続します。
パッケージは、データベース サーバー上のデータベース デプロイメントとしてではなく、アプリケーション サーバー上のファイル システム デプロイメントとして実行されます。
この主な理由は、ETL が一連のツールと統合されており、データベース サーバーにアクセスできないためです。これらのツールには、Salesforce および pgAdmin III 用の Apex Data Loader が含まれます。
これまでのところ、このエラーを一貫して再現することはできません。ただし、これは私が観察したことです:
- 通常の営業時間中に障害がより頻繁に発生する
- 時間外は故障が少ない
金曜日の朝の約 2 時間、特定のパッケージでエラーを再現することができました。
大規模なデータ フローに先行する子パッケージの呼び出しが有効になっている場合、大規模なデータ フロー中にエラーが発生しました。
大規模なデータ フローに先行する子パッケージの呼び出しが無効になっている場合、同じ大規模なデータ フロー中にエラーは発生しませんでした。
問題の子パッケージは、データベースにコールバックして、電子メールの本文で使用する少量の情報を取得し、電子メールを送信します。
リソースの制限を超えているように感じますか?
もしかして通信制限?
エラーの根本原因を特定するために、どのツールを使用すればよいか考えています。
関連する 2 つのサーバーに関する技術的な詳細を以下に示します。
SQL Server およびデータベース サーバー情報:
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 2011 年 6 月 17 日 00:54:03 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 (Build 7601) : Service Pack 1) (ハイパーバイザー)SSIS 情報:
Microsoft Visual Studio 2008 バージョン 9.0.30729.1 SP Microsoft .NET Framework バージョン 3.5 SP1アプリケーション サーバー情報:
OS 名: Microsoft Windows Server 2008 R2 Standard バージョン: 6.1.7601 Service Pack 1 Build 7601
オンラインでエラー メッセージを調べたところ、これらを見つけましたが、先に進む前に専門家の洞察を得たいと思っています。
- TCP Chimney、TCPIP オフロード エンジン (TOE)、または TCP セグメンテーション オフロード (TSO) を無効にする方法。
- Netsh コマンドを使用して TCP Chimney オフロードを有効または無効にする
どんな助けでも大歓迎です。
ありがとう
アップデート:
SQL Server Management Studio を使用している場合、同じエラーが同じ割合で見られるため、さらなるテストでは、これは "SSIS の問題" ではないことが示されています。クエリが複雑であっても、エラーの可能性は高くも低くもありません。解決するために、以下の 1 つの修正を試みました。
これは私たちの最初の試みでした。Application Server と Database Server で TCP Chimney が無効になりました。テストでは、同じエラーが同じ割合で発生することが示されています。
ここからどこへ行く?正直なところ、よくわかりません。一見良い選択肢が 1 つ残っています。
- Application Server と Database Server SQL Server のインストールが完全に一致しない
- アプリケーション サーバー = SQL Server 2008 (SP1) - 10.0.2531.0 (X64)
- データベース サーバー = SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)
計画は、アプリケーション サーバー上の SQL Server インストールをアップグレードすることです。ヒットと希望のようなものですが、現時点ではこれが最良の選択肢のようです. ハードウェアの問題を修正することでこれを解決できる可能性があり (つまり、修理または交換を意味します)、ハードウェアとソフトウェアの構成でできることは何もない可能性があると、頭の中で何かが教えてくれます。
ただし、根本的な原因を特定する方法はまだわかりません。根本的な原因を診断するためにどのツールを使用する必要があるのか 、まだ疑問に思っています。