1

因此,每当查询执行失败时,我的 SSIS 包都会将来自查询执行的消息记录为错误。因此,例如我的查询有 2 个打印语句,由于某些错误,查询由于某些原因而失败。SSIS 正在记录所有 2 个打印语句以及实际错误。我不希望 SSIS 包将打印消息记录为错误。我的包正在阅读有关“OnError”事件处理程序的信息。并且日志的来源设置为:System::ErrorDescription。考虑以下查询:

PRINT 'Trying to set string value to a datetime column.'
PRINT 'So i should get this error: Conversion failed when converting date and/or time from character string.'
UPDATE TempTable SET CreateDateTime = 'StringValue'

下面是 SQL Management Studio 的输出/消息。最后一行是实际错误,其余行都是打印语句。

Trying to set string value to a datetime column.
So i should get this error: Conversion failed when converting date and/or time from character string.

**Msg 3930, Level 16, State 1, Procedure pr_TempTable, Line 3 Conversion failed when converting date and/or time from character string.**

但是当我尝试执行 SQL 任务并运行此查询时,消息窗口中的所有这三行都被 SSIS 中的 OnError 事件处理程序视为多个错误。

4

1 回答 1

2

起初,我怀疑您实际上是在使用 RAISERROR “打印”您的语句,这是一种相当普遍的做法。

但是,在进一步的研究中,我发现将 PRINT 命令包含在错误消息中似乎是标准行为,该错误消息由同一脚本中的后续 RAISERROR 发送到调用应用程序。

因此,如果您不在脚本中使用 RAISERROR,您的 PRINT 语句将不会被 SSIS 视为错误。但是,如果您确实使用 RAISERROR,那么在 RAISERROR 之前发生的任何 PRINT 语句都将包含在引发的错误消息中。

这很奇怪,而且远非直观,但它似乎是标准行为,看起来你只需要解决它。

于 2015-10-15T18:22:26.713 回答