对于作为访问链接服务器的 SQL 登录名运行的作业,“当前安全上下文不受信任”

Kei*_*ith 5 sql-server linked-server sql-server-2012 jobs

我在尝试从作业运行存储过程时遇到错误“访问远程服务器被拒绝,因为当前安全上下文不受信任。[SQLSTATE 42000](错误 15274)”,并且存储过程查询链接服务器。该作业配置为作为 SQL 登录名运行,我将其称为 user1,并且我已在每个可能的位置授予 user1 权限和所有权。

以下是该作业的设置方式:

  • 所有者为 user1 的 SQL Server 代理作业
  • 作业中的一个步骤在“高级”选项卡上配置为“以用户身份运行”user1(“常规”选项卡上的“运行身份”列表是一个空白列表 - 不确定这是否是一个因素)
  • 该步骤调用 user1 有权执行的存储过程
  • 存储过程定义为WITH EXECUTE AS 'user1'
  • 链接服务器具有 user1 的本地/远程映射,并输入远程用户和远程密码。两台服务器上的用户名和密码相同。“对于上面列表中未定义的登录,连接将”选项设置为“使用登录的当前安全上下文进行”。我还尝试将此选项设置为“使用此安全上下文进行”,并重复 user1 及其密码。
  • user1 具有在远程服务器上查询的适当权限。
  • 我什至让 user1 成为本地服务器上的系统管理员

尽管如此,我仍然遇到访问错误。我一定在某个地方遗漏了一些东西......有什么想法吗?

Kei*_*ith 3

我通过 1)WITH EXECUTE AS 'user1'从存储过程中删除该子句和 2)user1从作业中删除来修复此问题 - 它不再是作业步骤的所有者或“以用户身份运行”。

我的最终配置是:

  • SQL Server 代理作业所有者是系统管理员,而不是 user1
  • 作业的步骤“以用户身份运行”留空
  • 该步骤调用 user1 有权限执行的存储过程
  • 链接服务器具有 user1 的本地/远程映射,并输入远程用户和远程密码。两台服务器上的用户名和密码相同。“对于上面列表中未定义的登录,连接将”选项设置为“使用登录的当前安全上下文进行”。
  • user1 具有在远程服务器上查询的适当权限。
  • user1 不需要具有 sysadmin 角色或任何此类管理角色