を使用して、コマンド ラインで 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)
....
}