SSIS 包在由 SQL 作业代理运行时失败



我在 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 中:

  1. 服务器>>安全>>凭据
    • 创建新凭据
    • 给它起个名字
    • 指定有权执行进程的 Windows 帐户
  2. 服务器>> SQL Server 代理>>代理>> SSIS 包执行
    • 创建新代理
    • 选择刚刚创建的凭据
    • 选择"SQL Server Integration Services Package"子系统
  3. 服务器>> SQL Server 代理>>作业>>你的作业>> SSIS 作业步骤
    • 在"运行方式"字段中,选择您刚刚创建的代理

现在,当你启动作业时,SSIS 包应使用步骤 1 中设置的凭据中指定的 windows 帐户与数据库建立连接,该帐户应该能够成功执行存储的过程。

你的SSIS包有密码吗? 如果没有,请为其设置密码,然后编辑您的作业并在那里输入密码。

如果 SSIS 包中有密码,请确保将保护级别设置为"加密敏感密码"。如果您使用"EncryptSensitive WithUserKey",那么您将是唯一可以运行它的用户。

最新更新