@yamatarou7610

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

SQL Serverをマスターとセカンダリで同期させつつ、セカンダリ側で別の運用を行う方法

SQL Serverをマスターとセカンダリで同期させつつ、セカンダリ側で別の運用を行う方法について

社内システムを作っているのですが、
現在運用されているシステムのSQL Serverから、必要なテーブルだけ別に立てたSQL Serverに同期させたいと思っています。

SQLについて1から勉強を始めたとこであり、トラブル対応が難しいため
可能な限りマスター側のSQLには手を加えたくない事があり、セカンダリサーバーを立ててようと思っております。

この条件なら、この機能を使うといいよ
と言う様な、回答を頂けると有り難いです。
詳しい方々、よろしくお願いいたします。

構想としては

1.マスターSQLが更新される

2.セカンダリSQLも同期更新される(多少遅れても良い)

3.セカンダリSQLの更新されたらAPP(C#)に更新データを反映

4.APP(C#)で追加したいデータがあれば、それをセカンダリSQLに追加(マスターには何も行わない)

基本的に小さい会社のデータベースなので
データ更新頻度・データ量は少ないです。

マスター側のサーバーの能力もそこまで高性能では無いと思うので、セカンダリ側で処理をなるべく完結させたいと思っております。

よろしくお願いいたします。

SQLの同期までは解決したので質問をクローズします。

・DistributorをSubscriber側(セカンダリ側)に置いた
 トランザクションレプリケーションで解決しました。

・参考にさせていただいたサイト
https://www.capybara-engineer.com/entry/2020/02/24/143604

0 likes

1Answer

マスターからセカンダリへレプリケーション(同期)させた後で、セカンダリを更新すると、データの整合性が取れなくなり、レプリケーションエラーとなるのでは?

0Like

Comments

  1. @yamatarou7610

    Questioner

    回答ありがとうございます
    エラーになりますか…

    ざっくりと調べてる限りで
    他の方法として想像しているのが以下の方法です。
    可能かどうか分かる範囲でご意見を頂けると助かります。

    a.マスターの特定のテーブルをC#側でSqlDependencyを使い監視、更新されたデータを取得(どこまでデータ取得が可能なのかはまだ理解できてません)
    それをセカンダリのSQLに取り込む。

    b.マスターの特定のテーブルをCDCで配信、受信したデータをセカンダリDBに書き込み(CDCについても今調べている途中になります)

Your answer might help someone💌