6

を使用して、コマンド ラインで SSIS パッケージを実行していdtexec.exeます。パッケージは、エラーを表示するためにMessageBox.Show()およびMsgBox()(それぞれ C# および VB.NET) を呼び出します。ボックスが閉じられるのを待っているため、ボックスは自動化されたジョブ プロセッサをハングさせています。

インタラクティブ モードでないときは、ボックスを非表示にする必要があるという印象を受けました。SSIS パッケージを変更せずにメッセージ ボックスを非表示にすることはできますか? パッケージはソフトウェア ベンダーからのものであり、変更するべきではありません。

編集:私が使用している完全なコマンド(詳細を削除するために編集)

C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe /F D:\Path\To\Package.dtsx /Conn DBConnection;"Provider=SQLOLEDB;Data Source=SERVER;Initial Catalog=DB;Integrated Security=SSPI;Connect Timeout=60" \Package.Variables[User::InputFileName].Properties[Value];C:\Path\To\Input.csv

EDIT2: メッセージ ボックス コードの例。これはスクリプト タスクにあります。

Public Sub Main()
    MsgBox("Failed to read/parse input file or generic database failure while running " + Dts.Variables("System::PackageName").Value.ToString() + ". Please check the layout of the feed and database connectivity.")
    Dts.TaskResult = ScriptResults.Failure
End Sub

EDIT3:InteractiveModeをテストするコードに将来誰かが興味を持っている場合。また、スクリプト タスクの ReadOnlyVariables を介して渡す必要があります。他にも問題があったので、パッケージを変更することになりました。

VB.NET
If CBool(Dts.Variables("System::InteractiveMode").Value) = True Then
    ....
End if

C#
if ((bool)Dts.Variables["System::InteractiveMode"].Value == true)
    ....
}
4

1 に答える 1

0

将来誰かが InteractiveMode をテストするコードに興味がある場合。また、スクリプト タスクの ReadOnlyVariables を介して渡す必要があります。他にも問題があったので、パッケージを変更することになりました。

VB.NET
If CBool(Dts.Variables("System::InteractiveMode").Value) = True Then
    ....
End if

C#
if ((bool)Dts.Variables["System::InteractiveMode"].Value == true)
    ....
}
于 2013-06-19T16:04:09.723 に答える