基本上我有一个在BIDS和独立包中运行的作业,当它在SQL Server代理下运行时,它没有正确完成(尽管没有错误消息)。
工作步骤是:
1)删除表中的所有行;
2)使用对于每个循环来填充Excel spreasheets中的表格;
3)清理桌子。
我已经尝试了这个MS page(步骤1和2),没有看到任何需要从服务器端安全性开始更改。
this page的SQLServerCentral.com,无法解析。
如何获取错误记录或修复?
注意我已经从服务器故障中重新发布了这个,因为它不是纯粹的管理员或编程问题之一。
我已经以我正在运行的代理帐户登录,并且该作业独立运行但却抱怨Excel表格为空?
答案 0 :(得分:1)
以下是我通过SQL Agent作业调用的SSIS包管理跟踪“返回状态”的方法。如果我们很幸运,其中一些可能适用于您的系统。
完整形式的SSIS调用存储返回的值,如下所示:
EXECUTE @ReturnValue = master.dbo.xp_cmdshell @Command
...然后它会变得混乱,因为你可以从SSIS返回一系列值。我在执行SSIS步骤时记录了数据库表中的操作和活动,并参考了这些步骤以尝试解决问题(下面是@Description的来源)。这是相关的代码和评论:
-- Evaluate the DTEXEC return code
SET @Message = case
when @ReturnValue = 1 and @Description <> 'SSIS Package' then 'SSIS Package execution was stopped or interrupted before it completed'
when @ReturnValue in (0,1) then '' -- Package success or failure is logged within the package
when @ReturnValue = 3 then 'DTEXEC exit code 3, package interrupted'
when @ReturnValue in (4,5,6) then 'DTEXEC exit code ' + cast(@Returnvalue as varchar(10)) + ', package could not be run'
else 'DTEXEC exit code ' + isnull(cast(@Returnvalue as varchar(10)), '<NULL>') + ' is an unknown and unanticipated value'
end
-- Oddball case: if cmd.exe process is killed, return value is 1, but process will continue anyway
-- and could finish 100% succesfully... and @ReturnValue will equal 1. If you can figure out how,
-- write a check for this in here.
最后引用“如果,当SSIS正在运行时,某些管理员小丑会杀死CMD会话(例如,来自taskmanager),因为该过程运行时间过长”情况。我从来没有发生过 - 我知道 - 但是当我写这篇文章时他们是超级偏执的所以我不得不调查它......
答案 1 :(得分:0)
为什么不使用内置于SSIS的日志记录?我们将日志发送到数据库表,然后以更友好的用户友好格式将它们解析到另一个表,并且可以看到每个运行的包的每一步。每一个错误。
答案 2 :(得分:0)
我最终解决了这个问题,谢谢你的建议。
基本上我使用我运行的代理用户帐户登录Windows并开始看到如下错误: “对于每个文件枚举器都是空的”
我复制了项目文件并开始测试,结果发现我仍然在For Each循环框的属性中留下了文件路径(N:/),尽管我已经更改了连接属性。一旦有错误条件可以使用,就更容易了。我还必须重新创建变量映射。
难怪人们只是重新创建整个包裹。
现在已修复并正常工作!