我正在使用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)
....
}