32

実行に掛かっているデータフロータスクがあります。
フローは単純で、異なるテーブルに対して2つのクエリを実行し(両方とも2つの結合を使用)、共通のIDを使用して出力を並べ替えてマージし、すべてのレコードに静的列を追加し、後で使用できるように行数をユーザー変数に保存しますを使用し、最後に別のDBのテーブルに挿入します。OLEDBのソースと宛先を使用しています。ソースはMSSQL2000で、宛先はMSSQL2012です

。症状:

  • 実行すると、データフローには通常の黄色の「実行中」アイコンが表示されます。ただし、ダブルクリックしてデータフローを表示すると、どの要素にも黄色、赤、または緑のマークが付いていません。
  • これは長期間続き、最初は約20分続き、その後長くなり始めたり、まったく戻らなくなったりしました。
  • 出力は次のことを示しています:
    情報:0x40043006、ロードサンドボックステーブル、SSIS。パイプライン:実行の準備フェーズが開始されています。
    情報:0x40043007、ロードサンドボックステーブル、SSIS。パイプライン:実行前フェーズが開始されています。

    そして、実行が停止されるまで、これ以上何もありません。
  • はい、これは以前に機能しました。はい、このETLを実行するために(ストアドプロシージャで)単一のクエリを使用しましたが、すべてのステップをSSISに移行したいと考えました。
  • 失敗した解決策:

  • ルックアップはありません。
  • タスクフローのデフォルトのバッファサイズが40485760に増加し、次に80971520に増加しました。
  • タスクのデフォルトのバッファ最大行数は1000000に設定されました。
  • タスクの遅延検証がTrueに設定されました。
  • タスク内のすべての要素は、外部データの検証をFalseに設定しました。
  • 両方のクエリには次のものがあります
    。SETFMTONLYOFF;
    NOCOUNTをオンに設定します。

    初めに追加されました。
  • 両方のクエリでMAXDOPが1に設定されていました。
  • プロジェクトのRun64ビットランタイムをFalseに設定します。
  • 宛先ロードをテーブルまたはビューからテーブルまたはビューに変更-ロックや制約のない高速ロード。
  • 高速ロードのために、バッチあたりの行数を1000に設定します。
  • 一部の回避策では、タスクフローを2つ以上のタスクフローに分割することを提案しています。ただし、両方のソースクエリで見つかった情報をマージする必要があるため、これは不可能です。
  • 余分なビット: 誰かが私を助けてくれることを本当に望んでいます。私はSSISにかなり慣れていません、これは私がそれを使うのは初めてです。私は通常、ETLでPentahoを使用していますが、クライアントはSSISにソリューションを実装する必要があります。私はこの問題と数日間戦ってきましたが、それを解決するためのアイデアが不足し始めています。


    コマンドラインを実行すると、それもスタックし、次の出力が表示されます。

    Progress: 2013-03-19 14:36:26.21
       Source: Load Sandbox Table
       Validating: 0% complete
    End Progress
    Progress: 2013-03-19 14:36:26.21
       Source: Load Sandbox Table
       Validating: 12% complete
    End Progress
    Progress: 2013-03-19 14:36:26.22
       Source: Load Sandbox Table
       Validating: 25% complete
    End Progress
    Progress: 2013-03-19 14:36:26.22
       Source: Load Sandbox Table
       Validating: 37% complete
    End Progress
    Progress: 2013-03-19 14:36:26.23
       Source: Load Sandbox Table
       Validating: 50% complete
    End Progress
    Progress: 2013-03-19 14:36:26.25
       Source: Load Sandbox Table
       Validating: 62% complete
    End Progress
    Progress: 2013-03-19 14:36:26.25
       Source: Load Sandbox Table
       Validating: 75% complete
    End Progress
    Progress: 2013-03-19 14:36:26.25
       Source: Load Sandbox Table
       Validating: 87% complete
    End Progress
    Progress: 2013-03-19 14:36:26.25
       Source: Load Sandbox Table
       Validating: 100% complete
    End Progress
    Warning: 2013-03-19 14:36:26.26
       Code: 0x80047076
       Source: Load Sandbox Table SSIS.Pipeline
       Description: The output column "ITEM_OID (1)" (47) on output "Merge Join Outp
    ut" (28) and component "Merge Join" (11) is not subsequently used in the Data Fl
    ow task. Removing this unused output column can increase Data Flow task performa
    nce.
    End Warning
    Progress: 2013-03-19 14:36:26.27
       Source: Load Sandbox Table
       Prepare for Execute: 0% complete
    End Progress
    Progress: 2013-03-19 14:36:26.27
       Source: Load Sandbox Table
       Prepare for Execute: 12% complete
    End Progress
    Progress: 2013-03-19 14:36:26.27
       Source: Load Sandbox Table
       Prepare for Execute: 25% complete
    End Progress
    Progress: 2013-03-19 14:36:26.27
       Source: Load Sandbox Table
       Prepare for Execute: 37% complete
    End Progress
    Progress: 2013-03-19 14:36:26.27
       Source: Load Sandbox Table
       Prepare for Execute: 50% complete
    End Progress
    Progress: 2013-03-19 14:36:26.27
       Source: Load Sandbox Table
       Prepare for Execute: 62% complete
    End Progress
    Progress: 2013-03-19 14:36:26.27
       Source: Load Sandbox Table
       Prepare for Execute: 75% complete
    End Progress
    Progress: 2013-03-19 14:36:26.27
       Source: Load Sandbox Table
       Prepare for Execute: 87% complete
    End Progress
    Progress: 2013-03-19 14:36:26.27
       Source: Load Sandbox Table
       Prepare for Execute: 100% complete
    End Progress
    Progress: 2013-03-19 14:36:26.31
       Source: Load Sandbox Table
       Pre-Execute: 0% complete
    End Progress
    Progress: 2013-03-19 14:36:26.31
       Source: Load Sandbox Table
       Pre-Execute: 12% complete
    End Progress
    Progress: 2013-03-19 14:36:26.31
       Source: Load Sandbox Table
       Pre-Execute: 25% complete
    End Progress
    Progress: 2013-03-19 14:36:26.34
       Source: Load Sandbox Table
       Pre-Execute: 37% complete
    End Progress
    Progress: 2013-03-19 14:36:45.69
       Source: Load Sandbox Table
       Pre-Execute: 50% complete
    End Progress
    

    その後、再びフリーズします。

    解決策 (自分の質問にあと5時間答えられないので、ここに投稿します。許可されたときに答えます。)
    私はついにそれを手に入れました。
    検証に問題があることが判明しましたが、質問の4番目の失敗したソリューションで述べられているように、SSIS要素だけがその検証を通過するわけではありません。
    CONNECTIONSも検証され、独自の遅延検証プロパティがあります。これはtrueに設定する必要があります。
    その後、実行時間は40分以上または実行なしから完全なプロセスで1分未満になりました(これははるかに大きなプロセスの1つのステップにすぎません)
    同じ問題を抱えている人がこの解決策を簡単に見つけられることを願っていますこの問題に遭遇し、オンラインで投稿された解決策はほとんどありません。

    簡単に言うと、DB接続を含む 、タスクに関係するすべての要素で、遅延検証プロパティがTrueに設定されていることを確認します。

    4

    10 に答える 10

    15

    やっと手に入れました。検証に問題があることが判明しましたが、質問の 4 番目の失敗した解決策で述べられているように、SSIS 要素だけがその検証を通過するわけではありません。CONNECTIONS も検証され、true に設定する必要がある独自の Delay Validation プロパティがあります。その後、実行時間は 40 分以上または実行なしから、プロセス全体で 1 分未満になりました (これは、はるかに大きなプロセスの 1 つのステップにすぎません)。同じ問題を抱えている人がこの解決策を簡単に見つけられることを願っています。この問題に直面している人々の割合と、オンラインに投稿された解決策はほとんどありません。

    簡単に言えば、DB 接続を含むタスクに関係するすべての要素で、Delay Verification プロパティが True に設定されていることを確認します。

    于 2013-03-20T06:27:22.207 に答える
    5

    同じ症状が発生しましたが、各コンポーネントで遅延検証を True に設定しても問題は解決しませんでした。

    OLE DB メソッドをテーブルまたはビューから sql コマンドに変更することで解決しました。

    よろしく。

    于 2015-08-13T09:20:06.677 に答える
    4

    データ アクセス モードを SQL コマンドに変更し、ビューを OLE DB ソースの SQL コマンド テキストに貼り付けることで、問題を解決しました。

    于 2013-05-16T10:51:03.673 に答える
    1

    これが誰かに役立つことを願っています。この OLE DB Source を使用して、パラメーターを使用して SP を実行しようとしていました。何も返す必要がなかったので、その部分は省略しました。しかし、それは私を許しませんでした。「SQLによって列情報が返されませんでした」と叫びました。そのため、SPでダミーのSQLステートメントを構成しました。これは決してtrueに設定しませんでした。しかし、その列を出力として取得することはなく、ジョブは実行前フェーズでハングアップしました。そのため、そのテストを常に true になるように変更し、列と presto を返しました。私は列で何もしませんが、そこに必要だと思います。

    于 2015-12-10T15:43:27.567 に答える
    1

    どうやら、もう1つの試みは、「32ビットランタイムを使用する」チェックボックスをオンにすることです-これは、パッケージをDBサーバー(64ビットで、私の場合は少なくとも、SQL Server 2008R2)。ジョブに移動し、右クリック > プロパティ… > ステップ > SSIS パッケージ ステップを右クリック > プロパティ… > 一般 > 実行オプション (タブ) > 32 ビット ランタイムを使用します。

    この問題が発生していましたが、パッケージをサーバーにデプロイしたのは 1 回だけでした (ロギング プロバイダーを有効にしていたので、「実行前」フェーズの後に停止することがわかりました)。BIDS では常に問題なく実行されました (奇妙なことに、別のサーバーでも問題なく実行されました...その理由はまだわかりません)。

    ここのスレッドは、うまくいくように見えるこの解決策を教えてくれましたが、私の問題は断続的に現れるので、YMMV. そのスレッドには他の解決策もあります。

    于 2013-12-03T10:30:42.607 に答える
    0

    数分前に同じ問題に遭遇しましたが、上記の提案はうまくいきませんでした (遅延検証 = true が答えになるようです)。最近、パラメーター スニッフィングに関するいくつかの問題が発見されました。ストアド プロシージャでそれを修正すると、パッケージは 1 分未満で実行されました。ストアド プロシージャをチェックして、これが原因であるかどうかを確認することを検討してください。

    于 2013-03-25T20:16:45.240 に答える