Sql-Server
觸發器 - SQL Server 2008 - 消息 7391 - “沒有事務處於活動狀態/無法開始傳輸”
我的 SQL Server 上有一個觸發器,位於 server7 中。
插入後,它會在另一台伺服器(server5)上插入數據,如下面的程式碼所示:
CREATETRIGGER [dbo].[trgSPTInsereDepartamento] ON [dbo].[tblDepartamento] AFTER INSERT AS BEGIN SET NOCOUNT ON; insert into [Server5].alfabase.dbo.tblDepartamento (CodDepto,DescDepto,IncluiOutroDepto) Select ins.codDepartamento, ins.DescDepartamento, 0 From inserted ins where not exists(select 1 from [Server5].alfabase.dbo.tblDepartamento sptsta where sptsta.CodDepto = ins.CodDepartamento) END
當我進行插入時,SQL 向我顯示:
連結伺服器“server5”的 OLE DB 提供程序“SQLNCLI10”返回消息“沒有事務處於活動狀態。”。消息 7391,級別 16,狀態 2,過程 trgSPTInsereDepartamento,第 7 行 由於連結伺服器“server5”的 OLE DB 提供程序“SQLNCLI10”無法開始分佈式事務,因此無法執行操作。
本地 DTC 屬性已全部檢查(它允許遠端使用者)。
我重新啟動了伺服器和 DTC 服務。我沒有運氣。
我讀了很多文章,但沒有一個對我有幫助。
謝謝您的幫助。
更新1:
檢查防火牆。禁用它但仍然無法正常工作。
DTC 沒問題(只有 server5 在集群上。)
伙計們,我真的沒有想法。
非常感謝。
更新 2:
從server7到server5,我遇到了上面的問題。為了測試,我在從 server4 到 server5 的數據庫上做了一個觸發器。它奏效了。所以,問題出在server7上。
Server7 不在集群上(server3、4、5 是集群的)。
固定的!
每個站點都有相同的步驟。
- 開始
- DCOMCNFG
- 展開“組件服務”
- 展開“電腦”>
- 展開“我的電腦”
- 展開“故障診斷碼”
- 右鍵點擊“本地 DTC”
- 特性
- 安全檢查“網路 DTC 訪問”和“允許遠端客戶端”。
它肯定會幫助很多人。問題是伺服器在集群中,所以做的是:
- 開始
- DCOMCNFG
- 展開“組件服務”
- 展開“電腦”>
- 展開“我的電腦”
- 展開“故障診斷碼”
- 展開“群集 DTC”<< 這是訣竅
- 右鍵點擊伺服器並為“本地 DTC”進行與上述相同的配置
重啟服務。祝你老闆快樂。