ローカル(Windowsサーバー2003)とgodaddy(Windowsサーバー2008)に2つのサーバーがあり、両方のサーバーにSQLサーバー2005をインストールし、両方のサーバーにリンクサーバーを作成しました。
1つのsampletblテーブルに対してgodaddyサーバーでトリガーを有効にしました。有効なトリガーを使用してgodaddyデータベースからローカルデータベースにデータを挿入しようとすると、次のエラーが発生します。
リンク サーバー "211_TEST" の OLE DB プロバイダー "SQLNCLI" から、"アクティブなトランザクションはありません" というメッセージが返されました。
メッセージ 7391、レベル 16、状態 2、手順 36to211、行 8
リンク サーバー "211_TEST" の OLE DB プロバイダー "SQLNCLI" が分散トランザクションを開始できなかったため、操作を実行できませんでした。
トリガーコードは次のとおりです。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[36to211] on [dbo].[SampleTbl]
FOR INSERT
as
Declare @a int;
Declare @b int;
Declare @c int;
select @a=TETS_DET,@b=TEST_DET2,@c=TEST_DET3 from SampleTbl
insert into [211_TEST].[MAPBULLION].[dbo].[TEST1]
(TETS_DET,TEST_DET2,TEST_DET3)
values
(@a,@b,@c)
ここで [211_TEST] はリンク サーバー名、MAPBULLION はローカル サーバーのデータベース、TEST1 はローカル サーバーのテーブル名です。
すべてのMSDTC設定を確認しましたが、それらは希望どおりです
解決策を提供してください。
これは、godaddy サーバーからローカル サーバーにデータを挿入するために実行しようとしているクエリです。
insert into sampletbl (TETS_DET, TEST_DET2, TEST_DET3)
VALUES ('5', '6', '7')