通过SQL作业运行时,SQL链接服务器不返回任何行

时间:2016-02-26 21:32:49

标签: sql-server stored-procedures permissions jobs

我有一个TSQL存储过程,当我通过SSMS查询窗口执行时,它运行得很好。此存储过程使用链接服务器。

但是,当我通过SQL Job运行存储过程时,无论是按需还是按计划,它都会返回0结果(所有选择都来自链接服务器)。但是,作业会运行,因为SP中的第一行会截断表。当我查看工作经历时,它说它很成功。

我猜这是权限问题,但我不知道该怎么做。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:0)

正如您所提到的,这听起来像是权限问题 - 您可以在SSMS中正常运行,因为您的登录(可能)可以访问这两个服务器,但默认的SQL Agent Server登录无法访问链接服务器 - 因此它可以运行存储过程但不能访问链接服务器,它不返回任何数据。

我要查看创建SQL Server代理代理帐户 - 这允许您使用SQL作业的登录,这两个SQL作业都有权运行存储过程以及访问链接服务器。只需确保您使用的任何登录都在两台服务器上都具有正确的访问权限。

以下是有关如何创建代理帐户的MS TechNet链接:

https://technet.microsoft.com/en-us/library/ms190698(v=sql.105).aspx

答案 1 :(得分:0)

问题是由于SQL代理没有对Dynamics CRM 2011过滤视图的权限。我们将绕过筛选的视图并点击直接表,将链接的服务器属性更改为具有权限的CRM用户,或者为SQL代理用户创建CRM用户。