【发布时间】:2015-08-21 06:57:19
【问题描述】:
我在通过链接服务器(在 Sql Server 2008 R2 实例上构建:10.50.2550.0 - x64 - 企业版)调用 SQL Azure 上的远程存储过程 (RPC) 时遇到问题。
这个问题不难重现,和“调用”存储过程并没有真正的关系,而是它的内部执行(我认为)......
看看我的简单代码:
CREATE PROCEDURE [dbo].[myStoredProcedure]
@AccountId INT = NULL
AS
BEGIN
DELETE FROM [dbo].[myTable];
INSERT INTO [dbo].[myTable] (Col1, Col2)
SELECT DISTINCT
Value1
, Value2
FROM [dbo].[myTableSource];
END
GO
GRANT EXECUTE ON [dbo].[myStoredProcedure] TO [myDbRole]
GO
当我通过我的链接服务器启动它时,使用此代码(在来自我的本地实例的连接上,其中已创建链接服务器)...
EXEC('[AZURE_LINKEDSERVER].[myDatabase].[dbo].[myStoredProcedure] @AccountId = NULL')
...我收到此错误(这似乎是一个警告!):
Message 2812, level 16, state 62, row 1
Could not find stored procedure 'sp_reset_connection'.
显然我到处检查,我没有调用那个存储过程......我认为它是由 Sql Server 内部使用的。
我也试过这段代码,结果一样:
EXEC sp_sqlexec '[AZURE_LINKEDSERVER].[myDatabase].[dbo].[myStoredProcedure] NULL'
链接服务器已“启用远程 RPC”(rpc 和 rpc out 选项均设置为 True)并且与其他存储过程和我迄今为止使用的所有其他 OPENQUERY 代码配合得很好:权限也可以正常工作.
奇怪的是SP的第一部分被正确执行(我在SSMS的Messages窗口中看到查询结果计数),但第二部分根本没有调用。
你能告诉SPsp_reset_connection与什么有关吗?
您知道无错误地调用我的 SP 的解决方法吗?
我什么都试过了……
使用的 SQL Azure 版本为 11.0.9231
【问题讨论】:
标签: sql-server sql-server-2008 azure-sql-database rpc linked-server