26

これが、この質問を修正するための私の最近の取り組みです。しかし今回は、Oded の記事Getting good Answers on StackOverflowで与えられた適切な助言に従うようにしています。

次のエラーの根本原因を特定する方法を見つける必要があります。

通信リンク障害

TCP プロバイダー: 指定されたネットワーク名は使用できなくなりました

一連の SSIS パッケージを実行しているときに、ときどきこのエラーが表示されます。このエラーは、以下から 1 つ以上のパッケージが実行されている場合に発生する可能性があります。

  1. SQL Server エージェント ジョブ
  2. バッチファイル
  3. 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) o​​n 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

オンラインでエラー メッセージを調べたところ、これらを見つけましたが、先に進む前に専門家の洞察を得たいと思っています。

どんな助けでも大歓迎です。

ありがとう

アップデート:

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 インストールをアップグレードすることです。ヒットと希望のようなものですが、現時点ではこれが最良の選択肢のようです. ハードウェアの問題を修正することでこれを解決できる可能性があり (つまり、修理または交換を意味します)、ハードウェアとソフトウェアの構成でできることは何もない可能性があると、頭の中で何かが教えてくれます。

ただし、根本的な原因を特定する方法はまだわかりません。根本的な原因を診断するためにどのツールを使用する必要があるのか​​ 、まだ疑問に思っています。

4

5 に答える 5

1

エラー メッセージは、接続が強制的に閉じられたことを示しています。また、これは多くのジョブを実行したときに発生することにも言及しました。おそらく、ネットワーク ファイアウォールが原因です。ファイアウォール管理者に連絡してログを調査し、ファイアウォールが接続を閉じたかどうかを確認する必要があります。この場合、解決策として次の 2 つが考えられます。

  1. トリガーされ、接続が閉じられる原因となっているファイアウォール ルールに例外を追加します。
  2. 非常に多くのジョブを同時に実行するのをやめてください。それらを順番に実行することを検討する必要があります。これは、良きネットワーク市民であるという考えにも従います。
于 2018-11-28T23:02:23.007 に答える
0
  1. 最初に、NIC の大量送信オフロード設定を削除しようとしましたか?
  2. 2 点目ですが、エラーを再現できる場合は、Wireshark を実行してパケットをキャプチャできますか?
  3. 3 点目、VM から vnic を変更しようとしましたか? 一部のモデルは問題を引き起こす可能性があります。(vmxnet3 を使用している場合は、e1000 などを試してください。)
  4. 最後のポイント、それらの間にvswitchがありますか、それらは同じホスト上にありますか、それらの間の物理スイッチなどです...ホスト内に同じホストと同じvswitchがある場合、構成が不適切なスイッチはトラフィックをドロップする可能性があります。トラフィックがサーバーを離れることはありません。
于 2014-12-02T01:48:36.213 に答える