リンクサーバーに対してSQLを実行しようとしていますが、以下のエラーが発生します。
BEGIN DISTRIBUTED TRANSACTION
SELECT TOP 1 * FROM Sessions
OLE DB provider "SQLNCLI" for linked server "ASILIVE" returned message "No transaction is active.".
Msg 7391, Level 16, State 2, Line 3
The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "ASILIVE" was unable to begin a distributed transaction.
プロバイダーから返されるエラーは2つあります。
エラー#1:
Number: $80040E14
Source: Microsoft OLE DB Provider for SQL Server
Description: OLE DB provider "SQLNCLI" for linked server "ASILIVE" returned message "No transaction is active.".
HelpFile:
HelpContext: $00000000
SQLState: 01000
NativeError: 7412
エラー#2
Number: $80040E14
Source: Microsoft OLE DB Provider for SQL Server
Description: The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "ASILIVE" was unable to begin a distributed transaction.
HelpFile:
HelpContext: $00000000
SQLState: 42000
NativeError: 7391
マイクロソフトにセキュリティよりも機能を優先させるにはどうすればよいですか?
または、少なくとも、2つのSQLサーバーを相互に通信させるにはどうすればよいですか?
関連する質問
- OLE DBプロバイダー「SQLNCLI10」が原因で操作を実行できませんでした...(*リンクサーバー名は
(null)
) - 分散トランザクションエラー?(Oracleプロバイダーを使用)
- NHibernateとの分散トランザクションに参加できません(Hibernateを使用)
- SQL Server 2008 R2で分散トランザクションを使用中にエラーが発生しました(SQL Server 2008 R2、応答なし)
- コードのみを介した分散トランザクションエラー(接続プールが原因)
- リンクサーバーで分散トランザクションコーディネーターを実行中にエラーが発生しました(SQL Server 2008、応答なし)
- 分散トランザクションエラー?(受け入れられた答えはありません。答えだけは役に立ちません)
- トランザクション内のリンクサーバーを使用してリモートテーブルに挿入する方法は?(受け入れられた回答は解決されません)
私がしたことは無関係ですが、とにかく投稿します。
Distributed Transaction Coordinator
サービスが両方のマチで実行されていることを確認します。両方のマシンですべてのMSDTCセキュリティを無効にします。
リンクサーバーでランダムオプションをオンにします。
呪われて誓った。
物を壊した。
リンクサーバー
SELECT
を使用できることを確認しました:SELECT * FROM ASILive.CustomerManagementSystem.dbo.Users .... (763 row(s) affected)
クライアントサーバーが
ping
リモートサーバーに対応できることを確認しました。C:\Documents and Settings\avatar>ping asicmstest.contoso.com Pinging asicmstest.contoso.com [10.0.0.40] with 32 bytes of data: Reply from 10.0.0.40: bytes=32 time<1ms TTL=128 Reply from 10.0.0.40: bytes=32 time<1ms TTL=128 Reply from 10.0.0.40: bytes=32 time<1ms TTL=128 Reply from 10.0.0.40: bytes=32 time<1ms TTL=128 Ping statistics for 10.0.0.40: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
リモートサーバーが名前で開始サーバーに通信できることを確認しました。
C:\Documents and Settings\avatar>ping asitestserver.contoso.com Pinging asitestserver.contoso.com [10.0.0.22] with 32 bytes of data: Reply from 10.0.0.22: bytes=32 time<1ms TTL=128 Reply from 10.0.0.22: bytes=32 time<1ms TTL=128 Reply from 10.0.0.22: bytes=32 time<1ms TTL=128 Reply from 10.0.0.22: bytes=32 time<1ms TTL=128 Ping statistics for 10.0.0.22: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
@@SERVERNAME
両方のサーバーのサーバー名と一致することを確認しました:SELECT @@SERVERNAME, SERVERPROPERTY('MachineName') ------------- ------------- ASITESTSERVER ASITESTSERVER
と
SELECT @@SERVERNAME, SERVERPROPERTY('MachineName') ---------- ---------- ASIGROBTEST ASIGROBTEST
悲鳴を上げる
SET XACT_ABORT ON
クエリを発行する前に発行:SET XACT_ABORT ON GO BEGIN DISTRIBUTED TRANSACTION SELECT TOP 1 * FROM Sessions
-
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer
両方のサーバーで。