リンクサーバーに対して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
両方のサーバーで。