Sql-Server
是否可以強制查詢忽略伺服器選項“遠端 proc 事務提升”,這樣它就不會促進遠端 proc 事務?
我有一個特定的查詢,它在遠端連結伺服器上執行儲存過程並將結果插入到本地臨時表中。
我不希望它促進遠端過程事務,但我無法重新配置伺服器。
是否有查詢提示或某種方式強制它不促進遠端過程事務?
編輯:我問的原因是因為我在嘗試執行遠端過程呼叫時遇到以下錯誤:
連結伺服器“MyRemotelyLinkedServer”的 OLE DB 提供程序“SQLNCLI11”返回消息“事務管理器已禁用對遠端/網路事務的支持。”。消息 7391,級別 16,狀態 2,過程 spMyRemoteProcedure,第 64 行
$$ Batch Start Line 15 $$無法執行該操作,因為連結伺服器“MyRemotelyLinkedServer”的 OLE DB 提供程序“SQLNCLI11”無法開始分佈式事務。
我知道我可以在連結伺服器選項上將“啟用分佈式事務提升”設置為 false 以解決此問題,但我不允許在此上下文中更改伺服器選項,因此我正在尋找解決方法。
是否有查詢提示或某種方式強制它不促進遠端過程事務?
不,沒有,但如果你目前正在做這樣的事情:
INSERT #Temp EXECUTE schema_name.procedure_name AT linked_server;
或者
INSERT #Temp EXECUTE linked_server.db_name.schema_name.procedure_name;
您可以使用以下方法解決它:
INSERT #Temp SELECT column_list FROM OPENQUERY(linked_server, 'EXECUTE db_name.schema_name.procedure_name');
假設您正在使用一個返回單個結果集的簡單過程。您可能還需要添加我在回答Using OPENQUERY to execute a script 時
SET NOCOUNT ON
提到的過程。