0

リモート SQL Server 2005 データベース テーブルを更新するトリガーを作成しました。コードは手動クエリの場合は機能しますが、トリガーでは機能しません。これは、トランザクションに配置しようとして MSDTC が原因で失敗するためです。

内部サーバーにはリモート サーバーへの適切なアクセス権がありますが、リモート サーバーには内部サーバーへのアクセス権がありません。これにより、トリガーは失敗しますか?

私が得るエラーは次のとおりです。

リンク サーバー "LinkServer" の OLE DB プロバイダー "SQLNCLI10" から、"パートナー トランザクション マネージャーがリモート/ネットワーク トランザクションのサポートを無効にしました。" というメッセージが返されました。メッセージ 7391、レベル 16、状態 2、行 1 リンク サーバー "LinkServer" の OLE DB プロバイダー "SQLNCLI10" が分散トランザクションを開始できなかったため、操作を実行できませんでした。

私はこれを調べて、すべてを提案どおりに設定しましたが、喜びはありませんか?

4

1 に答える 1

1

また、何らかの理由でリモート サーバーが使用できない場合はどうすればよいでしょうか。

一般に、サーバーは言うまでもなく、データベースを超えて機能するトリガーでアクションを実行することは避けてください。問題は、トリガー内で発生するすべてがのトランザクションの一部である必要があり、トリガーで問題が発生した場合、そのトランザクションがロールバックされることです。

通常、リモート リソース (同じサーバー/インスタンス上の別の DB、または本当にリモートのもの) に到達する際に断続的な問題がある場合、これが発生することは望ましくありません。

たとえば、このアクティビティをService Brokerと分離することを検討しましたか?

于 2012-05-09T12:19:02.590 に答える