我正在运行SQL Server 2014
我正在尝试设置运行SSIS包的计划SQL代理作业,我需要它使用SQL身份验证登录才能访问SSIS包访问的所有应用程序/服务器。
我创建了一个Credential,它映射到SQL身份验证登录并将其连接到SQL代理运行的代理,当访问SSIS包时,但是,作业失败并显示错误消息:
无法开始执行第1步(原因:无法获取proxy_id = 1的代理数据)。步骤失败。
我已经确认:
当我创建SQL Server代理作业时,运行SSIS包的步骤有一个SQL Server身份验证登录选项,但该选项显示为灰色,我无法选择它:
我觉得我错过了一个非常明显的步骤,但它正在逃避我,任何帮助都会受到赞赏。
答案 0 :(得分:0)
@oscar和@chuck都是正确的SQL代理作业,运行SSIS包无法在SQL身份验证模式下运行,他们必须使用Windows身份验证。除非您另行指定,否则运行代理作业的用户是SQL代理服务帐户。服务帐户和运行它的服务器上的SQL服务帐户需要某些权限。但是,您可以根据chuck的说明更改它执行的帐户。当然,根据你传递凭证的许多不同服务器以及访问的内容,你也可以进入kerberos双跳问题......相信我解决最后一部分不是那么有趣但仍然可行。
但是,如果您必须使用SQL身份验证,则根本不需要Windows用户。您可以将SQL身份验证凭据放在SSIS包中的连接管理器的连接字符串中。 SQL代理服务帐户可以为您处理任何文件访问问题,您的连接字符串可以传递sql凭据。没有双跳问题而且容易。如果您担心嵌入凭据,则应使用权限较低的sql帐户,但您也可以加密它们并将其与包一起存储。还有几种方法可以从加密状态动态获取它们。