SQL Server - トラブルシューティング
レシピの設計段階では、エラーが発生しがちです。 これまで確認されたデータベース関連の一般的なエラーをリストにまとめました。 さらにサポートが必要な場合は、トラブルシューティングセクションもご確認ください。 それでも動作しない場合、またはこちらで該当するエラーが見つからない場合は、カスタマーサポートにお問い合わせください。喜んでお手伝いします。
レシピ設計時エラー
タイムアウト
Workatoでは、実行に時間がかかりすぎる場合にジョブとアクションにタイムアウトを適用します。 データベースを操作する場合、クエリやストアドプロシージャの応答に時間がかかりすぎる場合があるため、これはよく発生する可能性があります。 この場合は、次の対応を検討してください。
アクションのタイムアウト(特定の1つのステップがタイムアウト)
- 返される行数をさらに制限する
- データベースにインデックスを導入する
- カスタムSQLクエリの最適化(不要な結合の排除など)
ジョブのタイムアウト(レシピの1回の実行全体がタイムアウト)
- レシピを分離し、レシピ関数を使用してワークフローをトリガー
- レシピ関数を呼び出すときに非同期呼び出しを使用
- 不要なアクションを削除する
既存のデータベースに接続できない
データベースへの接続を試みたときにデータベースコネクションがエラーを返す場合、考えられる理由は次のとおりです。
- オンプレミスエージェント(オンプレミスエージェントを使用している場合)が非アクティブで、再起動が必要です。
- データベースの認証情報が変更されています。 サポートが必要な場合は、データベース管理者にお問い合わせください。
- データベースサーバーが、Workatoまたは当社のOPAがインストールされているサーバーからのネットワークリクエストを受け入れていません。 Workatoまたは当社のOPAへのアクセスを許可するように、ネットワークアクセス制御を設定します。
ロジックエラー
無限ループ
Workatoでは、レシピ内のアクションが同じレシピを再度トリガーすると、無限ループが発生する可能性があります。 これはデータベースに限ったことではありません。 無限ループを検出して解決する方法をいくつか紹介します。 テーブルの新しい行でトリガーされ、同じテーブルに行を挿入するレシピを作成する場合、つまり既存のデータに対してデータエンリッチメントやデータ変換を実行する場合に、無限ループの発生を防ぐ方法をいくつか示します。
- Workatoで処理済みかどうかを示す列をテーブルに作成すること(詳細は無限ループに関するドキュメントを参照)
- 未処理の生データと変換済みデータ用に別々のテーブルを作成する
同じレコードの複数のコピー
挿入アクションを使用する場合、エラーが発生したものの行の挿入アクションステップが完了しているジョブ実行では、ジョブが再実行されると行が再挿入されます。 これにより、同じレコードの複数のコピーが挿入される可能性があります。 既存のレコードを最初に検索し、見つかった場合は更新し、見つからない場合は新しいレコードを挿入できるupsertアクションの使用を検討してください。 さまざまなユースケースと、それぞれをどのような場合に使用するかについては、ベストプラクティスを参照してください。
欠落値
SQL Serverでは、CONSTRAINTSを使用してデータ整合性を確保するために、テーブルに挿入する前に新しいデータを検証できます。 データに対する制約は、テーブルの作成時または変更時にSQL Server自体で定義でき、データ整合性が維持されるようにするために使用されます。 レシピの設計時に、これらの制約に気づかない場合があります。 たとえば、UNIQUE制約がある列は、実際のジョブが実行されるまで保証できません。 レシピの実行時に、これらの制約に違反するとエラーが発生します。 次のスクリーンショットは、PRIMARY KEY制約があるフィールドに入力が指定されていない場合のジョブエラーを示しています:

値が欠落している場合に考えられる理由と修正方法を次に示します。
- 主キー列が自動インクリメントされていません。 列を、挿入のたびに自動インクリメントされるID列に変更する
- 列に
unique制約があり、重複する値が拒否されます。 新しいレコードを挿入する代わりに、upsertアクションを使用してレコードを更新することを検討してください。 - レシピの実行時に入力されたデータピルが
NULL値を返しました。 これがNOT NULL制約のある列に挿入されると、エラーがスローされました。 詳細はこちら。必要に応じて、NULL値の論理チェックを追加し、デフォルト値を渡すことを検討してください。 これはWorkatoのFormulaモードで実現できます。
Last updated: