Linked server 使用SQL Server代理计划涉及链接服务器的任务失败

Linked server 使用SQL Server代理计划涉及链接服务器的任务失败,linked-server,Linked Server,如何使计划任务正常工作?我想安排一个每晚运行查询的任务。该查询正确解析并基本上从server2上的SQL Server 2005数据库中获取数据,并将数据插入server1上数据库的表中。查询和任务在server1上运行 我能够在server1上的Microsoft SQL Server Management Studio中执行查询。使用SQL Server代理,我能够创建并计划一个作业来执行查询,但该作业失败,出现以下错误:以用户NT AUTHORY\SYSTEM身份执行。用户“NT授权\匿名

如何使计划任务正常工作?我想安排一个每晚运行查询的任务。该查询正确解析并基本上从server2上的SQL Server 2005数据库中获取数据,并将数据插入server1上数据库的表中。查询和任务在server1上运行

我能够在server1上的Microsoft SQL Server Management Studio中执行查询。使用SQL Server代理,我能够创建并计划一个作业来执行查询,但该作业失败,出现以下错误:以用户NT AUTHORY\SYSTEM身份执行。用户“NT授权\匿名登录”[SQLSTATE 28000][错误18456]的登录失败。我的公司推测我需要被添加到server2的交互式登录列表中,这是策略的一部分

我在server1和server2上都有管理员权限,但我认为后者应该不是必需的。server1和server2都使用Windows身份验证,我推测这是在安装SQL Server时设置的

这就是我所做的。首先,我使用以下命令将server2添加到server1上的sys.sysservers中:
EXEC sp_addlinkedserver@server='server2'

然后,我使用EXEC sp_addlinkedsrvlogin@rmtsrvname='server2',@useself='true'在server1和server2上的登录名之间创建了一个映射

这使我能够在server1上的MicrosoftSQLServerManagementStudio中执行查询。成功了。我感到奇怪的是,尽管“命令已成功完成”,但以下命令仍不起作用:

EXEC sp_addlinkedsrvlogin@rmtsrvname='server2',@useself='false',@locallogin='MYDOMAIN\myname',@rmtuser='myname',@rmtpassword='***'

(请注意,由于Windows身份验证,真实密码未加密。)

我弄错了 Msg 18456,第14级,状态1,第1行 用户“myname”登录失败


@useself=TRUE的值指定登录名使用自己的凭据连接到rmtsrvname,rmtuser和rmtpassword参数被忽略。FALSE指定rmtuser和rmtpassword参数用于连接到指定locallogin的rmtsrvname。我希望这两者都能工作,因为我为rmtuser和rmtpassword指定的内容正是我用来直接登录远程服务器的内容

作业始终以Sql Server代理服务中指定的用户身份执行。如果您的服务以LocalSystem运行,则需要将“添加链接服务器”登录更改为

EXEC sp_addlinkedsrvlogin @rmtsrvname = 'server2', @useself = 'false', @locallogin = 'NT AUTHORITY\SYSTEM', @rmtuser = 'myname', @rmtpassword = '*****'
如果不是localsystem,则指定代理中使用的登录名

查看此讨论了解更多信息