SSIS 日志记录到包报告

问题描述 投票:0回答:1

我是一名 C# / BizTalk 开发人员,但我继承了 2 个 SSIS 包,一个在 Sql Server 2016 上,一个在 Sql Server 2017 上。这两个包都使用 FTP 任务将收集的数据发送到同一目的地。

在 Sql Server 2016 上的包中,我收到以下错误,在包执行报告中可见:

FTP:Error: Unable to send files using "FTP Connection Manager".

在Sql Server 2017上的包中,存在额外的错误条目,如下:

<Package name>:Error: An error occurred in the requested FTP operation. Detailed error description:
200 Type set to I.
200 PORT command successful.
553 /filename.csv: Permission denied

随后是与其他系统上相同的条目:

FTP:Error: Unable to send files using "FTP Connection Manager".

包级别或 FTP 任务级别上都不存在错误处理程序。第二个案例为 FTP 管理员提供了有用的信息,帮助我找出问题所在,但另一个案例(不幸的是不是同一个问题:-))没有为他提供任何真正的线索来找出可能出现的问题。

我的问题是:什么可能导致记录信息的差异?难道只是 2017 版本更广泛地记录其报告数据吗?或者是否存在隐藏设置,无论是在包源代码中、SSIS 包中还是 Sql Server Management Studio 中的作业设置中,或者其他地方,使得包在遇到错误时在其报告中存储更多详细信息?

感谢您的任何见解或指点!

logging ssis report
1个回答
0
投票

本身并不隐藏,但有各种可以摆弄的旋钮和转盘。

假设两个包都作为通过 SQL 代理计划的作业运行,并进一步假设我们使用包部署模型(这似乎是参考执行报告给出的),您可以指定每次执行的包日志记录级别。由于这是一项作业,因此所有运行都将具有相同的日志级别,直到采取行动。

开箱即用,有 4 个级别:无、基本、性能和详细,默认为基本。 MSDN 上有这些含义 https://learn.microsoft.com/en-us/sql/integration-services/performance/integration-services-ssis-logging?view=sql-server-ver16#select-a -日志记录级别

在 2016 年,您可以创建自己的日志记录级别,以便可以将 Basic 与一些性能计数器或您的组织需要的任何粒度级别混搭。蒂姆很好地说明了这一点https://www.timmitchell.net/post/2016/12/22/ssis-custom-logging-levels/

我无法想象 Microsoft 在 2016 年至 2017 年间花费了工程资金来改进 FTP 组件,但这可以解释可用信息记录方面的差异,但我对此表示怀疑。

可能有人选择使用 2017 年软件包的执行进程任务,而只是从命令行调用 FTP 进程。错误信息是向调用者提出的该任务的输出(StandardOutput 或 StandardError)。

按照这些思路,他们可以选择在 2017 年软件包中使用第三方 FTP 组件,这可以解释该组件的错误详细程度不同。

这些是我在参加一天的会议之前要快速检查的地方,但最可能的罪魁祸首是日志记录级别。编写作业脚本并检查值是什么并在服务器之间进行比较。如果这仍然没有说明差异,请使用两个包的屏幕截图编辑您的问题,以便我可以看到 FTP 是如何执行的。添加作业定义,我们可能需要从 SSISDB.catalog.operation_messages 中查看失败执行的详细信息并筛选数据。

© www.soinside.com 2019 - 2024. All rights reserved.