Sql-Server

觸發器 - SQL Server 2008 - 消息 7391 - “沒有事務處於活動狀態/無法開始傳輸”

  • August 13, 2021

我的 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”進行與上述相同的配置

重啟服務。祝你老闆快樂。

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