【发布时间】:2016-12-13 12:31:46
【问题描述】:
您好,我有 2 个不同的 SQL Server 数据库。
它们通过链接服务器相互连接。链接服务器工作正常。
当我尝试时:
SELECT
*
FROM
OPENQUERY
([192.168.1.170],
'SELECT MalCRM.dbo.ContractedNumber(1)')
我收到以下错误。我该如何解决?
链接服务器“192.168.1.170”的 OLE DB 提供程序“SQLNCLI11”返回消息“延迟准备无法完成。”。 消息 229,第 14 级,状态 5,第 1 行 对象“ContractedNumber”、数据库“MalCrm”、架构“dbo”的 EXECUTE 权限被拒绝。
【问题讨论】:
-
尝试使用相同的登录名直接在链接服务器上运行查询
SELECT MalCRM.dbo.ContractedNumber(1)。您几乎肯定会发现该帐户没有完整的所需权限集。 -
对不起,我不确定我是否理解。你能更详细地解释一下吗? select 语句在目标服务器上也能正常工作。但是当我尝试通过数据库链接运行时,我不能。
-
我怀疑您不能直接在 [192.168.1.170] 上运行查询。尽管链接已就位,但您在该服务器上没有必要的权限。通过 ssms 连接到 [192.168.1.170]。运行查询 (
SELECT MalCRM.dbo.ContractedNumber(1))。如果您收到相同的错误消息,请要求 dba 修改您的权限。 -
160 DwhCRM 170 MalCRM。选择在 160 上工作,但不在 170 上工作。如果您可以指示,我也有 sys 权限,我可以给自己。
-
链接用什么账号连接170?该帐户没有函数
ContractedNumber的执行权限。
标签: sql-server tsql dynamic-sql openquery