1

データベース構造を設計しようとしています。これは、SQLサーバーのいくつかのインスタンスにインストールされます。これらのデータベースを定期的にマージする必要があります。

問題はにありますserver_A (PK)id=222 user=Tomが、にありserver_B (PK)id=222 user=Peterます。

したがって、server_Afor Tom、、...ですが、アドレステーブルで同じもの(FK)userid=222は異なる意味を持ちます。Address=1 abc street(FK)userid=222server_B

私が考えることができるのは、この安価なアプローチだけです。サーバーが3つある場合は、1番目のサーバーにIDをシードして1000000001、2番目のサーバーを2000000001、3番目を3000000001....にシードします。これにより、サーバーが繰り返されないようになります。これは、短時間のプロジェクトで機能する可能性がありますか?そして、問題をさらに複雑にするためにGuid / uniqueidentifierを使用する必要はありませんか?

この状況に対する一般的/正しいアプローチは何ですか?

4

3 に答える 3

1

を、元の主キーと一緒に複合主キーserver_idの一部となった外部キーとして追加できます。各サーバーには独自の ID があります。

于 2012-05-26T00:31:05.397 に答える
0

SQL Server のマージ レプリケーション機能を使用すると、これが処理されます。

于 2012-05-25T12:29:50.513 に答える
0

主キーとして int の代わりに GUID を使用します。それらは、異なるシステムで生成された場合でも一意です。

私は SQL Server マージ レプリケーションの専門家ではありませんが、この投稿によると、競合する PK を自動的に解決することはできないため、最初から競合する PK を回避することをお勧めします。

于 2012-05-25T20:08:33.607 に答える