2015-07-21 217 views
0

我已经梳理了网络,以搜索从远程数据库运行的Sql Server Agent Job返回的错误的答案,但无法使其正常工作。错误是:链接服务器 - 访问远程服务器被拒绝

Msg 15274, Sev 16, State 1, Line 1 : 
    Access to the remote server is denied because the current security context is not trusted. [SQLSTATE 42000] 

我已经链接的服务器设置,像这样:

EXEC sp_addlinkedserver @server=N'serverName' 
     , @srvproduct=N'' 
     , @provider=N'SQLNCLI' 
     , @datasrc=N'serverName'; 

,同样跑:

EXEC sp_addlinkedsrvlogin @rmtsrvname = N'serverName' 
     , @useself = false 
     , @locallogin = NULL 
     , @rmtuser = 'sa' 
     , @rmtpassword = 'userpassword' 

当我执行EXEC [ServerName].[DbName].[SchemaName].[StoredProcName]我得到返回的值全成,但同查询在Sql Agent作业中失败。我必须做些什么才能让Agent Job工作?

+0

它可能是您的代理在没有足够权限访问链接服务器的帐户下运行。代理运行在哪个acc下? – OzrenTkalcecKrznaric

回答

1

参见this

总之,似乎发生这种情况:

当您在运行不能由系统 管理员帐户拥有一个SQL Server代理作业,SQL Server代理运行SETUSER冒充 的主人工作。

如果作业使用链接的服务器,则作业可能失败,因为执行SETUSER后不允许远程访问 。

因此,无论是将作业的所有权更改为sysadmin acc,还是将链接的服务器映射更改为例如使用模拟。我没有看到任何其他选择。

+0

谢谢奥兹伦。我正在建立一个凭证,然后我将设置一个代理。或者,我如何将工作所有权更改为系统管理员?谢谢 – dLight

+0

SSMS:转到对象资源管理器,展开SQL Server代理,展开作业。找到你的工作,点击右键,选择属性。通过编辑所有者字段更改用户。使用sa(如果可以的话)或其他具有sysadmin角色的用户。 – OzrenTkalcecKrznaric

+0

非常感谢你Ozren。有用! – dLight

相关问题