我有一个SSIS包,我在其中设置了包登录
的OnError OnInformation OnPre-执行 OnPostExecute OnBufferSizeTuning
当我在VS中的(64位)服务器上执行此包时,它将写入所有信息,包括从文件处理多少行以及“预执行阶段开始”,但是如果我执行包从同一服务器上的SQL Server代理作业的文件存储中,程序包只写入一行“文件处理已启动”。
我环顾四周,但无法找到任何关于调试与作业或32位与64位不同的软件包日志记录。它是完全相同的包 - 任何想法为什么包日志记录会有所不同?
答案 0 :(得分:1)
我认为你混淆了两种不同的日志选项。
您可以在SSIS包中建立事件记录,并将该输出定向到表,文件,事件日志等。
如果没有编写自己的实用程序来运行SSIS包,dtexec就是将SSIS的包XML转换为实际命令。 dtexec侦听输出到BIDS / SSDT / VS中的屏幕的各种事件和管道,或者将其记录在作业步骤历史记录窗口中。 Visual Studio运行的默认值与命令行或SQL代理调用不同。
您要设置的参数是/Cons
ConsoleLog或/Rep
ReportLog。最有可能是ReportLog。
SQL Agent的默认执行将类似于/REPORTING E
,这只会生成您记录的错误(根据BOL)。您可以从代理作业中剥离该作业,然后将其默认为指定的
如果未指定/ Reporting选项,则默认级别为E. (错误),W(警告)和P(进度)。
或明确提供您想要的报告事件。
在SQL代理作业步骤中,它最终可能看起来像这样。开头是不同的,因为它指向文件系统上的包,而您的将在MSDB中。
单击“手动编辑命令行”选项,然后将/ REPORTING弯曲到您的意愿
答案 1 :(得分:0)
在将其设置为作为SQL Server作业运行之前,请确保已为程序包选择了日志记录提供程序。 请查看此文章作为问题的可能解决方案:How to Check SSIS Package Job Results