[解決済み] 分散型トランザクションを開始できない
質問
リンクされたサーバーに対して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 Seversを互いに会話させるにはどうしたらいいでしょうか?
関連する質問
-
OLE DBプロバイダ「SQLNCLI10」のため、操作を実行できませんでした...
(※リンク先のサーバー名は
(null)
) - 分散型トランザクションエラー? ( オラクルプロバイダー使用 )
- 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
を両サーバーで実行します。
解決方法は?
リモートサーバーのMSDTCがローカルサーバーのクローンであることを発見しました。
Windowsアプリケーションイベントログから。
イベントの種類 エラー
イベントのソース MSDTC
イベントのカテゴリー CM
イベントID 4101
日付:2011年9月19日
時刻: 午後1時32分59秒
ユーザー:N/A
コンピュータ アシテスツサーバー
説明ローカルMS DTCは、以下のことを検出しました。 ASICMSTEST上のMS DTCは、ローカルMSと同じ一意のIDを持っています。 DTC。これは、2つのMS DTCが通信できないことを意味します。 との通信が可能です。この問題は、通常、どちらかのシステムが は、サポートされていないクローンツールを使用してクローンされました。MS DTCは、以下のことを要求します。 システムは、SYSPREP などのサポートされているクローン化ツールを使用してクローン化されています。 コマンドラインから 'msdtc -uninstall' を実行し、次に 'msdtc -install' を実行します。 プロンプトを表示すると、問題が解決します。注意:'msdtc -uninstall'を実行すると、次のような問題が発生します。 その結果、システムはすべてのMS DTC設定情報を失います。
詳細については、ヘルプ&サポートセンターで http://go.microsoft.com/fwlink/events.asp .
実行中
msdtc -uninstall
msdtc -install
を実行し、SQL Server サービスを停止して再起動すると、直りました。
関連
-
[解決済み] SQL Serverで小数点の後に2桁の数字を表示させる方法
-
[解決済み] SQL Server xp_delete_file パラメータ
-
[解決済み] テーブルが存在しない場合、"Table 'dbo.Foo' already exists." というエラーはどのように解決すればよいですか?
-
[解決済み] リンクサーバーとしてローカルデータベースを使用する場合、「Deferred prepare could not be completed」エラーが発生する。
-
[解決済み] SSISの日付と時刻の連結
-
[解決済み] ミリタリータイムを使用するDatetimeフィールド - 標準時間のみが必要です。
-
[解決済み] sp_addrolememberとalter user with default schemaの違いは何ですか...?
-
[解決済み] create関数は、バッチ内の唯一のステートメントでなければなりません。
-
[解決済み] SQLでテーブルの行数を数える
-
[解決済み] SQL ServerでGROUP BYと一緒にDISTINCTを使用する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】フラットファイルの日付カラムで「キャスト指定に無効な文字値があります」を修正する方法とは?
-
[解決済み] 「ストアドプロシージャが見つかりませんでした
-
[解決済み] SQL Server: caseステートメントでUniqueIdentifierを文字列に変換する
-
[解決済み] 監査失敗、クレデンシャル検証 4776
-
[解決済み] 関数内から実行できるのは、関数と一部の拡張ストアドプロシージャのみです。
-
[解決済み] NVARCHAR(MAX)の最大文字数を教えてください。[重複しています]。
-
[解決済み] SQL ServerのIsNull()関数に相当するOracleは何ですか?
-
[解決済み] データベースとスキーマの違い
-
[解決済み] SQL Server : varchar を INT に変換する。
-
[解決済み] SQL ServerでGROUP BYと一緒にDISTINCTを使用する