私はdtexec.exe
でコマンドラインでSSISパッケージを実行しています。パッケージは、エラーを表示するためにMessageBox.Show()
とMsgBox()
(それぞれC#とVB.NET)を呼び出します。ボックスが閉じられるのを待っているので、ボックスは自動化されたジョブプロセッサーを吊り下げています。SSISパッケージ内から対話型メッセージボックスを無効にするにはどうすればよいですか?
私はthe impressionで、インタラクティブモードではないときにボックスを非表示にする必要がありました。 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:今後誰かがインタラクティブモードをテストするコードに興味がある場合。また、スクリプトタスクのReadOnlyVariablesを介して渡す必要があります。他の問題があったので、私はパッケージを修正した。
VB.NET
If CBool(Dts.Variables("System::InteractiveMode").Value) = True Then
....
End if
C#
if ((bool)Dts.Variables["System::InteractiveMode"].Value == true)
....
}
downvoteとVtCを持っていた理由がわかりません。サイトの適切な質問と思われます。 vb/C#スクリプトの外観はどうですか? SSIS Variable InteractiveModeの状態を検査していますか? – billinkc
いいえ、InteractiveMode変数が表示されません。これはベンダーのもので、変更を加えることは悲しいことではありません。私は自分の質問を編集し、メッセージボックスコールの例を入れました。 – merekel
私はあなたがMessageBox関数にパッケージの実行を結びつけることはできないと思います。 IMOを使用する場合は、ボックスがポップアップしないようにスクリプトタスクを変更する必要があります。ところで、私は質問が正当だと思うので正当なものにするために質問をupvoted。 – rvphx