SQL 代理作業上的連結伺服器錯誤
我從 SQL Server 代理作業中收到以下錯誤。但是,如果我在作業中手動執行查詢,它可以正常工作。為什麼是這樣?只是需要 MSDTC 的 SQL 代理嗎?我不認為這是權限問題,因為作業在具有系統管理員角色的服務帳戶下執行。
資訊
以使用者身份執行:SERVERS\quinsql_sa。無法執行操作,因為連結伺服器“TestServer”的 OLE DB 提供程序“SQLNCLI10”無法開始分佈式事務。
$$ SQLSTATE 42000 $$(錯誤 7391)連結伺服器“TestServer”的 OLE DB 提供程序“SQLNCLI10”返回消息“事務管理器已禁用對遠端/網路事務的支持。”。$$ SQLSTATE 01000 $$(錯誤 7412)。步驟失敗。
涉及的版本是SQL Server 2008R2和SQL Server 2012。SQL Job在2008R2上
我以前沒有看到過這種情況,您可以手動執行查詢但不能作為代理作業執行似乎很奇怪。儘管SQL Server Central幾年前也有類似的文章,但這並不是聞所未聞的,但其中涉及一些相當複雜的查詢。
您要執行的查詢是什麼?
正如 Tom V 所說,了解您從哪個版本的 SQL Server 執行查詢以及連結伺服器連接到的位置會很有幫助
當您手動執行查詢時:
- 是代理工作正在做的一切嗎(代理工作不超過一個步驟)?
- 您是否使用與執行代理作業相同的帳戶?
首先,值得檢查兩台伺服器上的 MSDTC 配置。我不知道在這種情況下是否會這樣,但最好先嘗試消除簡單的事情。看看這些網站以獲得一些細節:
好的。因此 SQL 代理作業正在呼叫儲存過程。該儲存過程正在執行
INSERT SELECT
查詢。執行
INSERT SELECT
儲存過程的外部工作正常。執行儲存過程導致錯誤
無法執行操作,因為連結伺服器“TestServer”的 OLE DB 提供程序“SQLNCLI10”無法開始分佈式事務
為了解決這個問題,我必須在呼叫 SQL 作業/儲存過程的伺服器上啟用 MSDTC。
我仍然不太確定為什麼 INSERT SELECT 查詢在儲存過程之外可以正常工作。