2

SQL サーバー全体での GUID の一意性について疑問に思っていました。

1 つの中央データベース サーバーと数百のクライアント データベース (両方とも SQL サーバー) があります。クライアントとマスター サーバー間でデータを同期するために、マージ レプリケーション (双方向) をセットアップしています。同期プロセスは 1 日に 2 ~ 3 回行われます。

同期するテーブルごとに、GUID を PrimaryKey として使用しており、各テーブルにローカルで新しいレコードが追加され、新しい GUID がローカルで生成されます。

各クライアント マシンとマスター DB サーバーで GUID が作成される場合、すべてのクライアントとマスター DB で一意の GUID を生成するにはどうすればよいですか?

その GUID を繰り返さないように、他のクライアント/サーバー DB で生成された GUID をどのように追跡しますか?

4

4 に答える 4

2

さらに調査を行う必要がありますが、私の記憶が正しければ、GUID は MAC アドレスとタイムスタンプに基づいていると思います。

http://www.sqlteam.com/article/uniqueidentifier-vs-identity

GUID で一意のキー違反に遭遇した MCM を何人か知っています。

これはどのように起こりますか?仮想世界には、仮想アダプターがあります。

あるホストから別のホストに 1 つの仮想マシンをコピーすると、同じアダプター、MAC アドレスを持つことができますか?

両方のイメージが同時に実行されている場合、一意の GUID を取得できない可能性があります。

ただし、その状態はまれです。キーに別のフィールドをいつでも追加して、一意にすることができます。

GUID をクラスター化された PK として使用するかどうかについては、全体的な議論があります。他のインデックスは、リーフ (ノード) で PK のコピーを取得することに注意してください。これは、レコードごとに 16 バイト x インデックスの数です。

これが役立つことを願っています。

ジョン

于 2013-09-27T12:55:23.397 に答える
2

GUIDは一意です(目的のために)

インターネット上で終わりのない議論があります -私はこれが好きです

于 2013-09-27T10:16:35.767 に答える