3

SSIS スクリプト タスクでコードのいずれかが失敗したときに LINE NUMBER を取得する方法

次のコードは、エラーが発生した行番号を示していません。

        MessageBox.Show(ex.Message.ToString(), "Error", MessageBoxButtons.OK)
        Dts.Events.FireError(1, ex.TargetSite.ToString(), ex.Message.ToString(), "", 0)
        Dts.TaskResult = ScriptResults.Failure

ご意見をお聞かせください

よろしく

4

3 に答える 3

3

スタック トレースの行番号がスクリプト タスクで使用できないことは確かです。スクリプト タスクおよびコンポーネント用に SSIS で使用される Visual Studio Tools for Applications (VSTA) をセットアップして、スクリプト自体のデバッグ ビルドを許可できるとは思えません。デバッグ情報がないと、.NET ランタイムは、エラーが発生したコンパイル済みコード内の命令に対応するソース コードの行を特定できません。

ただし、率直に言って、特定のスクリプト タスクに非常に多くのコードがあり、それをナビゲートするために行番号が必要な場合は、私見よりもはるかに大きな問題になります。その機能をカスタム タスクに移動するか、少なくともスクリプト タスクから参照できる別の .NET アセンブリに複雑なコードを配置することをお勧めします。スクリプト タスクは小さなコードには最適ですが、フルボアの開発環境としては、VSTA は「実際の」Visual Studio に比べて劣っています。

于 2012-11-23T02:21:13.027 に答える
1

@Edmundによると、行番号を取得できませんでした。ex.StackTraceを使用して、エラー/例外に関する詳細を確認してください。スクリプトタスクで次の行を使用してみてください。

MessageBox.Show(ex.StackTrace, "Error", MessageBoxButtons.OK)
Dts.Events.FireError(1, "Component Name", ex.StackTrace, "", 0)
Dts.TaskResult = ScriptResults.Failure

お役に立てれば!

于 2012-11-23T04:45:52.070 に答える
1

ご指摘のとおり、リリース ビルド スタック トレースから行番号を取得することはできません。しかし、メソッド呼び出しはどうですか? おそらく、長いメソッドを複数のメソッド呼び出しに分割して、長いメソッドのワークフローを説明することができます。エラーが発生した場合は、より短い方法で検査できます。

于 2015-02-27T17:49:32.553 に答える