我不得不说我讨厌“我做错了什么?”这样的一般性问题.但我根本不知道可能是什么问题:
我创建了SSIS包,它从平面文件(CSV)中获取数据,计算其中一列的平均值,按日期计数,并将其写入数据库并删除原始文件.在SSIS中执行时,一切正常,但是当我在服务器代理中安排它时,它根本不起作用 – 日志报告成功但数据库中没有新数据,并且.csv文件存在于其原始位置.
我知道在SSIS中设置保护级别的问题,所以我将其更改为“EncryptAllWithPassword”,并且我使用与Server Agent相同的密码.
Here is a link to the Server Agent Job script(创建为“作为DROP和CREATE的脚本作业”)
编辑:只是为了使事情变得更奇怪,使用
dtexcec /f {filepath} /de {password}
执行程序没有问题.我知道我可以在Windows中执行这样的命令,但是我想将所有预定的作业保存在一个地方 – 在服务器代理中
编辑:通过改变UNC的路径解决
解决方法
设置要通过sql Server代理作业运行的程序包时,需要记住两件重要事项.
无论多么简单,都可以将UNC路径用于所有文件位置.服务器很可能具有与开发机器不同的文件结构视图,因此UNC路径确保两台机器都引用相同的路径.
使用代理帐户执行该程序包,如此处所述http://www.mssqltips.com/sqlservertip/2163/running-a-ssis-package-from-sql-server-agent-using-a-proxy-account/.代理帐户必须能够访问物理路径和服务器对象.这也允许在各种包上进行安全分层(并非所有包都需要访问所有包).