SQL代理作业使用SQL身份验证运行SSIS包

时间:2016-06-17 18:25:26

标签: sql-server ssis

我正在运行SQL Server 2014

我正在尝试设置运行SSIS包的计划SQL代理作业,我需要它使用SQL身份验证登录才能访问SSIS包访问的所有应用程序/服务器。

我创建了一个Credential,它映射到SQL身份验证登录并将其连接到SQL代理运行的代理,当访问SSIS包时,但是,作业失败并显示错误消息:

无法开始执行第1步(原因:无法获取proxy_id = 1的代理数据)。步骤失败。

我已经确认:

  • 我可以使用SQL身份验证帐户访问所有服务器/应用程序
  • 为SQL身份验证配置SSIS包连接
  • 我可以使用SQL身份验证
  • 手动运行SSIS包
  • 为Windows AD和SQL身份验证登录配置了所有访问过的SQL Server数据库

当我创建SQL Server代理作业时,运行SSIS包的步骤有一个SQL Server身份验证登录选项,但该选项显示为灰色,我无法选择它:

enter image description here

我觉得我错过了一个非常明显的步骤,但它正在逃避我,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

@oscar和@chuck都是正确的SQL代理作业,运行SSIS包无法在SQL身份验证模式下运行,他们必须使用Windows身份验证。除非您另行指定,否则运行代理作业的用户是SQL代理服务帐户。服务帐户和运行它的服务器上的SQL服务帐户需要某些权限。但是,您可以根据chuck的说明更改它执行的帐户。当然,根据你传递凭证的许多不同服务器以及访问的内容,你也可以进入kerberos双跳问题......相信我解决最后一部分不是那么有趣但仍然可行。

但是,如果您必须使用SQL身份验证,则根本不需要Windows用户。您可以将SQL身份验证凭据放在SSIS包中的连接管理器的连接字符串中。 SQL代理服务帐户可以为您处理任何文件访问问题,您的连接字符串可以传递sql凭据。没有双跳问题而且容易。如果您担心嵌入凭据,则应使用权限较低的sql帐户,但您也可以加密它们并将其与包一起存储。还有几种方法可以从加密状态动态获取它们。