2つのサーバー:sq009
およびsq202
、どちらもSQL Server 2012 SP3を実行しています。
sq202は、ERP system、Sage 500のDBをホストするSQL Serverです。
sq009は、IBM MaximoインスタンスのDBをホストするSQL Serverです。
状況:sq202のテーブルにトリガーが存在し、行がsq202 DBに挿入されたときに、sq009 DBに行を挿入する必要があります。ただし、レコードが挿入されると、Sage 500ダイアログでこのエラーが発生します。
リンクサーバー "sq009"のOLE DBプロバイダー "SQLNCLI11"が分散トランザクションを開始できなかったため、操作を実行できませんでした。
リンクサーバー "sq009"のOLE DBプロバイダー "SQLNCLI11"がメッセージ "トランザクションマネージャーがリモート/ネットワークトランザクションのサポートを無効にしました。"を返しました。
両方のサーバーは、リンクサーバーとして他を持っています。どちらも、指定されたセキュリティコンテキストを使用してすべての接続が確立されています。どちらにもサーバーオプションEnable Promotion of Distributed Transactions for RPCset toFalseがあります。
分散トランザクションコーディネーターサービスがsq009で実行されていることを確認し、その権限を適切に設定します(これは必要ないことを理解していますが)。
しかし、sq009はまだ不満を持っています。
Sq202ボックスでDTCを有効にしてみてください。これは、サーバーが分散トランザクションを開始するためです。また、sq202ボックスにあるsq009リンクサーバーに対して、[RPCの分散トランザクションのプロモーションを有効にする]オプションをTrueに設定する必要もあります。このオプションがTRUEの場合、リモートストアドプロシージャを呼び出すと、分散トランザクションが開始され、トランザクションがMS DTCに参加します。
T-SQL分散トランザクションと要件に関する役立つ情報: https://technet.Microsoft.com/en-us/library/ms191156(v = sql.105).aspx
リンクサーバーオプション: https://technet.Microsoft.com/en-us/library/ms186839(v = sql.105).aspx