在我的SQL Azure上調用遠程存儲過程(RPC)時,通過鏈接服務器(基於Sql Server 2008 R2實例構建:10.50.2550.0 - x64 - Enterprise版)。SQL Azure鏈接服務器中的sp_reset_connection錯誤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的消息窗口中看到了查詢結果計數),但第二部分根本不被調用。
請問您可以告訴SP sp_reset_connection
與哪些有關? 你知道一個解決方法來調用我的SP沒有錯誤嗎? 我什麼都試過......
SQL Azure在使用具有版本11.0.9231
謝謝你的回答:鏈接的服務器已正確創建... ...每一個即席查詢工作正常,也單行SP的工作!每個鏈接服務器選項設置正確(我檢查你的鏈接)...你知道一種方法來禁用sp_reset_connection「標誌」?爲什麼通過這種方式通過Sql Server連接調用? – MAXE
不,它在協議級完成 - 如果你通過ssms撥打電話,它是否工作?它確實聽起來像某人已經打電話給sp_reset_connection,因爲我從來沒有看到它像這樣失敗 - 請仔細檢查所有代碼,因爲它已部署到SQL(實際上選擇修改它而不是查看源代碼),並確保它不在任何地方 –
不,根本沒有任何呼叫:您可以嘗試使用我的代碼......也可以使用SSMS,它不會啓動! – MAXE