none
リンクサーバーへのスナップショット分離レベル RRS feed

  • 質問

  • お世話になります。

    頻繁に更新を行うテーブルを参照する為、基本的にスナップショット分離レベルでテーブルを参照しています。

    今回別システムのテーブルを参照する事になり、リンクサーバーを設定しました。

    ・サーバーA(SQL Server 2005):スナップショット分離レベル ON

    ・サーバーB(SQL Server 2008):スナップショット分離レベル ON サーバーAへのリンクサーバー

    サーバーBでトランザクションレベルをスナップショットにし、サーバーAのテーブルを参照すると以下のエラーが発生します。

    「トランザクションの分離レベル"SNAPSHOT"でのリモートアクセスはサポートされません。」

    以下のページに「分散トランザクションはスナップショット分離ではサポートされていません。」との記載があります。

    リモートのDBを参照する際、スナップショット分離レベルで参照する事は不可能という認識でよいでしょうか。

    何か設定等で可能にする方法はないでしょうか。

    http://msdn.microsoft.com/ja-jp/library/ms179599(v=sql.105).aspx

    サーバーBのデータ取得時、サーバーAのマスタテーブルとJOINして値を取得したい為スナップショット分離レベルでの接続をしたい、という状況です。

    不可能な場合、READ COMMITEDでサーバーAのマスタから一時テーブルを作成し、レベルをスナップショット分離に変更後にサーバーBのテーブル+一時テーブルでデータを取得しようかと考えていますが、何か他にいい方法はないでしょうか。

    2013年7月18日 6:24

回答

  • 記述を見る限りリンクサーバでのスナップショット分離レベルは無理かと思います。
    ディスク容量に余裕があればですが、サーバAのデータをサーバBにレプリケーションを使って
    同期し、必要なときにレプリケーションされたデータをサーバB上でJOINしてはいかがでしょうか。
    都度一時テーブルを作る必要がなくなると思います。

    • 回答としてマーク mame_2011 2013年7月22日 8:18
    2013年7月19日 5:51
    モデレータ

すべての返信

  • 記述を見る限りリンクサーバでのスナップショット分離レベルは無理かと思います。
    ディスク容量に余裕があればですが、サーバAのデータをサーバBにレプリケーションを使って
    同期し、必要なときにレプリケーションされたデータをサーバB上でJOINしてはいかがでしょうか。
    都度一時テーブルを作る必要がなくなると思います。

    • 回答としてマーク mame_2011 2013年7月22日 8:18
    2013年7月19日 5:51
    モデレータ
  • > ElanLilacさん

    やはり無理そうですよね。
    なかなか「リモートサーバー」と「スナップショット分離レベル」の
    両方についての記述が無く、もしかして出来るのかと思ってしまいました。

    レプリケーションについては経験がありませんが、
    これを機に勉強してみたいと思います。

    ありがとうございました。
    2013年7月22日 8:18