【问题标题】:SQL Messages Output appearing as Errors in SSISSQL 消息输出在 SSIS 中显示为错误
【发布时间】:2015-10-12 18:56:35
【问题描述】:

因此,只要查询执行失败,我的 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 事件处理程序将消息窗口中的所有这三行视为多个错误。

【问题讨论】:

  • 是的,请提供更多信息。
  • 这是更多数据,但我们需要信息。存储过程是什么样的?什么会产生异常?你的错误处理是什么样的?您已将此标记为 ssis-2012 和 ssis-2008 是哪一个?如果是 2012 年,您是使用包部署还是项目部署模式?
  • “SQL Management Studio 的输出”是什么意思。是什么让您认为它将打印语句记录为错误,这是完全不同的事情?
  • @TabAlleman - 输出指的是您在运行查询或过程后在 SSMS 的消息窗口中看到的信息。
  • 虽然没有解释原因,但这表明有人发现了同样的问题。显然这是标准行为,您显然必须解决它:sqlservercentral.com/Forums/Topic1354462-391-1.aspx

标签: sql ssis business-intelligence ssis-2012 ssis-2008


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2018-04-12
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 2013-03-13
    • 1970-01-01
    相关资源
    最近更新 更多