Kite の答えは正しいですが、SQL Server Integrated Services (SSIS) プロジェクト内からこの同じエラー メッセージの修正を探しているときに、この質問と回答を見つけた後の観察/経験を共有したいと思いました。
今日、私の SSIS パッケージの 1 つが、そのステップの 1 つでこのエラーを受け取り始めました。少し調査した結果、DataReader Source
ODBC を介して iSeries データベースに接続するオブジェクトでパッケージが失敗していることがわかりました。これが ODBC エラーなのか、iSeries/ODBC DB ドライバー内のエラーなのかはわかりませんが、エラー メッセージはまったく同じでした。
私にとって本当に奇妙なことは、同じ ODBC 接続を介して接続する MS Access のリンクされたテーブルからデータを参照でき、MAKE TABLE
Access 内の同じデータセットから問題なく操作を実行できることでした。エラー メッセージを検索したところ、この Q & A を見つけました。このヒントは、SSIS パッケージにも当てはまります。
SSIS 内でこれを修正するには、Microsoft BIDS デザイナーでパッケージを開く必要があります。次に、関連付けられているオブジェクトを開き、タイムアウトが発生しているオブジェクトをData Flow Task
選択します。DataReader Source
オブジェクトDataReader Source
には という名前のプロパティがありますCommandTimeout
。0
(デフォルトではなく)に設定すると30
、問題が解決するはずです。タイムアウトが問題であることを確認した後、タイムアウトを に設定し60
てステップを再実行しました。1 分間のタイムアウトで問題が解決しました。
すべてのオブジェクトCommandTimeout
の値を に更新したくなるかもしれないことに注意してください。これはお勧めできません。代わりに、タイムアウトを維持し、制限をかなり寛大な値に増やします。私が行ったように、それらを 2 倍にするか、さらに寛大な 5 ~ 10 分のタイムアウト値を指定します。 DataReader Source
0
タイムアウト プロパティが存在するのには理由があります。アプリケーションに十分なタイムアウトを与えることはできますが、アプリケーションがまったくタイムアウトしない場合、データベース エンジン内に問題が発生し、ステップの実行が完了しない可能性があり、アプリケーションが停止する可能性があります。これはありそうもないかもしれませんが、不可能ではありません。
安全を確保し、タイムアウトを適切に調整してください。