コピーアクティビティのシンクよりストアドプロシージャを設定する際のタイムアウトエラー解消方法について
コピーアクティビティのシンクより、セルフホステッド IR を使用した Azure SQL Database データセットを設定すると、長い「読み込み中」の後、「ストアドプロシージャ名」の読み込みに失敗し、エラーメッセージが表示される場合の対処法。
案件でこのエラーが出てイラっとしたので、中の人に聞いてみた。
2 パターンあるけど、いずれも「コードで指定することで、SQLDB に通信させない(=ストアドプロシージャの一覧を取得して来させない)」方法であると理解している。
以下、詳細。
<エラー内容>
エラーコード:11408
詳細:The operation has timed out.Activity ID:(任意のID)
<現象>
- Azure Data Factory Studio を開き、パイプラインよりコピーアクティビティのシンクを選択すると、初回は必ず起こる。
- 当時、シンク側のデータベースはストアドプロシージャが 1 つも無い状態。ストアドプロシージャを設定する必要が無いため、本エラーが出てどうしても困っている、という状況では無い。
<対処法>
該当のパイプラインの「{}」ボタンからコードを表示し、copy activity sink で読み込みが失敗している部分の "sqlWriterStoredProcedureName" を変更する。
まずはパターン 1 を試し、それでも事象が解消されない場合はパターン 2 を試してみる。
※"sqlWriterStoredProcedureName" に指定したものが初期値になる。
パターン 1 // 何も指定しない
"sink":{ "sqlWriterStoredProcedureName":"", }
パターン 2 // 任意のストアドプロシージャ名(存在せずとも良い)を指定
"sink":{ "sqlWriterStoredProcedureName":"[dbo].[xxxxx]", }
案件では、パターン 1、パターン 2 ともに想定した動きになった。
今回、お客さん側がインフラの設計・実装、あたくしがパイプラインの設計・実装と分かれていたため、インフラ側で抜本的な対策をするとなるとちょっと話が変わってくるはず。
セルフホステッド IR のスペックを上げる、とかになるのかな?