我在 etl 过程中运行 SSIS 包时遇到问题。
有一个表包含不同类型的 etl 步骤,即存储过程步骤、cmd(复制-移动文件(步骤、发送邮件、SSIS 步骤。
主存储过程根据步骤的类型运行这些步骤,并记录开始结束时间、错误等。此主要存储过程是 由 SQL 服务器作业触发。
当我计划此作业时,SSIS 步骤出现错误,如下所示;
错误:SSIS 错误代码DTS_E_OLEDBERROR。 OLE 数据库错误具有 发生。错误代码:0x80040E4D。 OLE DB 记录可用。 来源:"Microsoft SQL Server 本机客户端 11.0" 结果: 0x80040E4D 说明:"用户'服务器\用户$'登录失败。
然而,当我手动运行此主过程(使用我的 Windows 用户登录(时,它成功运行。
我检查了使用代理帐户运行的内容,它对我不起作用。因为在 sql 服务器作业中,我运行我的主存储过程而不是 SSIS 包。
代理账户参考链接; https://www.mssqltips.com/sqlservertip/2163/running-a-ssis-package-from-sql-server-agent-using-a-proxy-account/
只要您与数据库的连接有效,它就应该有效。 错误消息告诉您serveruser$
不是有效的登录名。
如果 SSIS 包使用用户名和密码(即SQL 用户(连接到数据库,则应该可以直接设置/配置登录名以访问 proc 所在的服务器和数据库,并且下次运行作业时,它应该能够成功执行 proc。
相反,如果 SSIS 包使用 Windows 身份验证进行连接,则需要使用指定引用具有数据库访问权限的 Windows/Active Directory 帐户的凭据的代理。 在 SSMS 中:
- 服务器>>安全>>凭据
- 创建新凭据
- 给它起个名字
- 指定有权执行进程的 Windows 帐户
- 服务器>> SQL Server 代理>>代理>> SSIS 包执行
- 创建新代理
- 选择刚刚创建的凭据
- 选择"SQL Server Integration Services Package"子系统
- 服务器>> SQL Server 代理>>作业>>你的作业>> SSIS 作业步骤
- 在"运行方式"字段中,选择您刚刚创建的代理
现在,当你启动作业时,SSIS 包应使用步骤 1 中设置的凭据中指定的 windows 帐户与数据库建立连接,该帐户应该能够成功执行存储的过程。
你的SSIS包有密码吗? 如果没有,请为其设置密码,然后编辑您的作业并在那里输入密码。
如果 SSIS 包中有密码,请确保将保护级别设置为"加密敏感密码"。如果您使用"EncryptSensitive WithUserKey",那么您将是唯一可以运行它的用户。