SQL 链接服务器 returns 当 运行 通过 SQL 作业时没有行
SQL Linked Server returns no rows when ran via SQL Job
我有一个 TSQL 存储过程,当我通过 SSMS 查询 window 执行时,它 运行 很好。此存储过程使用链接服务器。
然而,当我通过 SQL 作业 运行 存储过程时,无论是按需还是计划,它 returns 0 结果(所有选择都来自链接服务器).但是,该作业 运行,因为 SP t运行 中的第一行包含 table。当我查看作业历史时,它说它是成功的。
我猜这是一个权限问题,但我不知道该怎么办。任何帮助,将不胜感激。
正如您所提到的,这听起来像是一个权限问题 - 您可以在 SSMS 中 运行 它很好,因为您的登录名(大概)可以访问两个服务器,但默认 SQL 代理服务器登录无法访问 linked 服务器 - 因此它可以 运行 存储过程但无法访问 linked 服务器它 returns 没有数据。
我会考虑创建一个 SQL Server Agent Proxy 帐户 - 这允许您使用一个 SQL 作业的登录名,两者都有权 运行存储过程以及访问 linked 服务器。只需确保您使用的任何登录名在两台服务器上都有正确的访问权限。
这是关于如何创建代理帐户的 MS TechNet link:
https://technet.microsoft.com/en-us/library/ms190698(v=sql.105).aspx
问题是由于 SQL 代理没有 Dynamics CRM 2011 筛选视图的权限。我们将绕过过滤视图并点击直接表,将链接服务器属性更改为具有权限的 CRM 用户,或者为 SQL 代理用户创建 CRM 用户。
我有一个 TSQL 存储过程,当我通过 SSMS 查询 window 执行时,它 运行 很好。此存储过程使用链接服务器。
然而,当我通过 SQL 作业 运行 存储过程时,无论是按需还是计划,它 returns 0 结果(所有选择都来自链接服务器).但是,该作业 运行,因为 SP t运行 中的第一行包含 table。当我查看作业历史时,它说它是成功的。
我猜这是一个权限问题,但我不知道该怎么办。任何帮助,将不胜感激。
正如您所提到的,这听起来像是一个权限问题 - 您可以在 SSMS 中 运行 它很好,因为您的登录名(大概)可以访问两个服务器,但默认 SQL 代理服务器登录无法访问 linked 服务器 - 因此它可以 运行 存储过程但无法访问 linked 服务器它 returns 没有数据。
我会考虑创建一个 SQL Server Agent Proxy 帐户 - 这允许您使用一个 SQL 作业的登录名,两者都有权 运行存储过程以及访问 linked 服务器。只需确保您使用的任何登录名在两台服务器上都有正确的访问权限。
这是关于如何创建代理帐户的 MS TechNet link:
https://technet.microsoft.com/en-us/library/ms190698(v=sql.105).aspx
问题是由于 SQL 代理没有 Dynamics CRM 2011 筛选视图的权限。我们将绕过过滤视图并点击直接表,将链接服务器属性更改为具有权限的 CRM 用户,或者为 SQL 代理用户创建 CRM 用户。