クライアントの場所でオフラインで動作するWinFormアプリケーション(C#)とBacked SQL Server 2008があります。現在、すべてのブランチは単一の場所から管理されていたため、ブランチ間では常にID列の値が一意です。異なるSQL Serverインスタンス間で一意のID列値を生成
ここでは、このアプリケーションを複数の場所から管理し、オフラインでもオンラインでも動作させる必要があります。可能にするために、私たちはPUBLIC IPにSQL Serverを配置し、各ブランチには別々のローカルSQL Serverインスタンスが実行されます。データは定期的にローカルサーバーと中央サーバーの間で同期されます。
この方法はデータを同期するのに適しているのですか、それとも私ができることがあるのですか?
私が上記のアプローチに踏み込んだ場合、私が直面する問題はデータを同期させることです。テーブル構造に問題があります。次のように私はテーブルのコースがあります。
COURSE_ID
がIDENTITY列COURSE_NAME
標準COURSE_BRANCH_ID
の名前はコースが取られた分岐を、表しているCOURSES (COURSE_ID (identity column), COURSE_NAME, COURSE_BRANCH_ID)
。
これで、各SQL ServerはCOURSE_ID
列の独自の値を生成しますが、これは異なるサーバーで同じである可能性があります。
- ユニークな組み合わせは、
COURSE_ID
とCOURSE_BRANCH_ID
です。 COURSE_BRANCH_ID
をCOURSE_ID
に追加する方法はありますか?新しいIDENTITY列を追加しないでください。私は- 考え
アプローチ
- 、
COURSE_ID
列からIDを削除し、新しい列がID列になりますIDを言います。 COURCESテーブルに挿入した後今 - は
COURSE_ID
Concate(COURSE_BRANCH_ID,ID)
として
convert(number(convert(varchar,COURSE_BRANCH_ID) + convert(varchar,ID))
の値を更新します。しかし、私はこのような問題と周りの19のテーブルを持っているように、これは努力の多くを必要としますトリガーを記述します。私はこれ以上何かできることがありますか?どんな提案も歓迎です!ありがとうございました!