【发布时间】:2017-06-05 22:46:03
【问题描述】:
在this microsoft link 的帮助下,我知道许多与 SSIS 诊断相关的工具:
- 事件处理程序(特别是“OnError”)
- 错误输出
- 运营报告
- SSISDB 视图
- 日志记录
- 调试转储文件
我只想知道使用 SSIS 进行(非生产)诊断设置的基本“转到”方法是什么。我是一名开发人员,我将有权访问我将在其中执行诊断的 QA 和 UAT 服务器。
在我第一次尝试查找错误源时,我使用 SSMS 查看操作报告。我只看到了这个:
我按照上面显示的说明进行操作,但它所做的只是引导我转了一圈。概览允许我查看详细信息,但详细信息显示上述消息并要求我返回概览。简而言之,除了告诉我在 SSIS 包中哪个任务失败之外,还有零错误信息。
我只是想达到一个我终于可以看到有关错误的一些信息的地步。
如果答案是我首先需要在我的包中配置一个 OnError 事件,那么我的下一个问题是:该 OnError 事件的基本“转到”设计器流程是什么样的?
仅供参考,这个问题类似于“best way of logging in SSIS”
我还注意到overall strategy for success with SSIS in this answer。作者说:
检测您的代码 - 让它生成日志条目,可能会记录诊断信息,例如检查总数或计数。没有这个,故障排除几乎是不可能的。此外,断言检查是考虑错误处理的好方法(在 b 中的行数是否相等,A:B 关系真的是 1:1)。
听起来不错!但我想举一个更具体的例子……特别是为了让我了解产生了哪些特定错误的基础知识。
我试图避免学习所有 SSIS 诊断方法,只是为了选择一种好的“全方位”方法。
更新
根据 Nick.McDermaid 的建议,我在 SSISDB DB 中运行:
SELECT * FROM [SSISDB].[catalog].[executions] ORDER BY start_time DESC
这向我显示了我手动执行的包。时间戳正确反映了我运行它们的时间。如果有什么异常(?),那就是 reference_id、reference_type 和 environment_name 列为空。所有其他列都有值。
更新 #2
我找到了一半我正在寻找的答案。没有错误信息可用的原因是因为默认情况下 SSIS 包执行日志记录级别为“无”。我必须change the logging level。
Nick.McDermaid 通过解释我不需要深入研究 OnError 工具或 SSIS 日志记录提供程序工具,给了我其余的答案。
【问题讨论】:
-
不要在你的 SSIS 包中添加特殊的 OnError 处理程序。这是针对极端情况的,而且是劳动密集型的。唯一的例外是脚本任务错误,除非你在脚本中点击它们并明确写出它们,否则它永远不会给你任何有用的东西。很难说你的情况发生了什么。我刚刚查看了“所有处决”标准报告,然后单击了所有消息,它在那里向我显示了一个详细的错误。如果你的任务有错误,那是什么样的?
-
我从来没有费心比较表之间的行数。如果行数不匹配,则发生错误并且应该已经报告,或业务逻辑导致存在不同的计数或自行数以来源已更改被拍了。
-
@Nick.McDermaid 一个是“数据流”任务,另一个是sql脚本任务。
-
@Nick.McDermaid。轻微修正:一个“数据流”任务和一个“sql任务”。这两者是不相关的,并且在不同的 SSIS 包中找到......但两者都失败了,完全没有关于错误是什么的信息。
-
您在哪里找到了您描述的运营报告?试试这个:找到包(在 SSMS 的 Integration Services Catalogs 文件夹下),然后按 Reports / Standard Reports / All Executions。您应该在这里找到一个状态为“失败”的行。按所有消息链接。您应该会在此处找到您的任务以及详细的错误。请描述失败的地方。
标签: sql-server ssis ssis-2016