4

セーブポイントを持つトランザクション内で、リンク サーバーにあるテーブルと結合する必要があります。実行しようとすると、次のエラー メッセージが表示されます。

“Cannot use SAVE TRANSACTION within a distributed transaction”

リモート テーブルのデータはめったに変更されません。ほぼ固定です。このテーブルをトランザクションから除外するように SqlServer に指示することは可能ですか? (NOLOCK) ヒントを試しましたが、このヒントをリンク サーバーのテーブルに使用することはできません。

誰かが回避策について知っていますか? ole SqlServer 2000 を使用しています。

4

4 に答える 4

0

この場合、分散テーブルが大きすぎなければ、一時テーブルにコピーします。可能であれば、行数を最小限に抑えるためにフィルタリングを含めます。その後、通常どおり続行できます。データが変更されることはめったにないため、トランザクションを実行するたびにネットワーク経由で大量のデータが送信されるのを防ぐために、データを永続的なテーブルにコピーし、何かが変更されたかどうかを確認するという別のオプションがあります。最近の変更のみをプルすることができました。

于 2013-09-19T19:56:54.890 に答える
0

できることの 1 つは、トランザクションを開始するに、リモート テーブルのローカル コピーを作成することです。これはオーバーヘッドが大きいように聞こえるかもしれませんが、リモート参加はパフォーマンスの問題になることが多く、そのための SOP 修正もローカル コピーを作成することです。

于 2013-09-12T22:03:55.597 に答える
0

UI レベルからトランザクションを処理する必要があり、Visual Studio 2008/.net fx 3.5 または + フレームワークを使用している場合は、ロジックを TransactionScope クラスでラップできます。フロントエンドがなく、Sql サーバーのみで作業している場合は、私の回答を無視してください...

于 2013-09-19T20:33:24.033 に答える