当由sql作业代理运行时,ssis包失败

31moq8wy  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(407)

我在etl进程中运行ssis包时遇到了问题。
有一个表包含不同类型的etl步骤。i、 e.存储过程步骤、cmd(复制移动文件)步骤、发送邮件、ssis步骤。
主存储过程根据步骤类型和日志开始结束时间、错误等运行这些步骤。此主存储过程由sql server作业触发。
当我计划此作业时,ssis步骤出错,如下所示;
错误:ssis错误代码dts\ U e\ U oledberror。发生ole db错误。错误代码:0x80040e4d。ole db记录可用。源:“microsoft sql server native client 11.0”hresult:0x80040e4d描述:“用户'server\user$'登录失败。”。
但是,当我手动运行这个主过程(使用windows用户登录)时,它会成功运行。
我用代理帐户检查了这个,它对我不起作用。因为在SQLServer作业中,我运行的是主存储过程而不是ssis包。
代理账户参考链接;https://www.mssqltips.com/sqlservertip/2163/running-a-ssis-package-from-sql-server-agent-using-a-proxy-account/

kpbpu008

kpbpu0081#

只要与数据库的连接有效,它就可以工作。错误消息告诉你 server\user$ 不是有效的登录名。
如果ssis包使用用户名和密码(即sql用户)连接到db,那么应该直接设置/配置登录以访问proc所在的服务器和数据库,下次运行作业时,它应该能够成功执行proc。
如果ssis包正在连接windows身份验证,则需要使用代理来指定引用具有数据库访问权限的windows/active directory帐户的凭据。在ssms中:
服务器>>安全性>>凭据
创建新凭据
给它起个名字
指定有权执行进程的windows帐户
服务器>>sql server代理>>代理>>ssis包执行
创建新代理
选择刚创建的凭据
选择“sql server集成服务包”子系统
服务器>>sql server代理>>作业>>您的作业>>ssis作业步骤
在“运行方式”字段中,选择刚刚创建的代理
现在,当您启动作业时,ssis包应该使用在步骤1中设置的凭据中指定的windows帐户与数据库建立连接,该帐户应该能够成功执行存储过程。

dgiusagp

dgiusagp2#

你的ssis包有密码吗?如果没有,为它设置密码。然后编辑你的作业并在那里写密码。

9nvpjoqh

9nvpjoqh3#

如果ssis包中有密码,请确保protectionlevel设置为“encryptsensitivewithpassword”。如果您使用“encryptsensitivewithuserkey”,那么您将是唯一可以运行它的用户。

相关问题