Sql-Server

是否可以強制查詢忽略伺服器選項“遠端 proc 事務提升”,這樣它就不會促進遠端 proc 事務?

  • March 3, 2020

我有一個特定的查詢,它在遠端連結伺服器上執行儲存過程並將結果插入到本地臨時表中。

我不希望它促進遠端過程事務,但我無法重新配置伺服器。

是否有查詢提示或某種方式強制它不促進遠端過程事務?

編輯:我問的原因是因為我在嘗試執行遠端過程呼叫時遇到以下錯誤:

連結伺服器“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提到的過程。

引用自:https://dba.stackexchange.com/questions/260871