1

現在、PKが存在するDBがありますint IDENTITY。私は最近、昨年、これらをレプリケーション トポロジに追加する任務を負いました。IDENTITY フィールドを除いて、これは非常にうまく機能しています。

uniqeidentifierそれらを(GUID)に変更または置換するためのオプションを調べたいと思います。
NEW PK 列を挿入することは可能ですか?
に増やすだけのほうがいいでしょうbig intか?

他に考慮すべきことはありますか?


なぜ私がこれをやりたいのかを詳しく説明するには:

レプリケーションが IDENTITY 列に遭遇すると、その列の一意の INT を確保するために、各サブスクライバーに対して 1 ~ 1000 (デフォルト) などの ID 範囲を確保することを理解しています。加入者が多ければ多いほど、問題が大きくなる可能性があります。これにより、Identity Range Check Constraint エラーが発生し続けます。

ありがとう

4

1 に答える 1

1

本当に列を削除する必要がある場合はINT IDENTITY、次の手順を実行する必要があります (多かれ少なかれ):

  • テーブルに新しい GUID 列を作成し、値を入力します
  • そのテーブルを参照するすべての外部キー関係を特定し、それらをメモします (たとえば、CREATE スクリプトをディスクなどに保存します)。
  • すべての参照テーブルに新しい GUID 参照フィールドを追加する
  • すでに持っているINT参照フィールドに基づいてこれらの値を入力します
  • テーブルへのすべての FK 参照を削除します
  • テーブルにINT IDENTITY PKをドロップします
  • 新しい GUID 列を PK にする
  • すべての参照テーブルから古い INT 参照列を削除します
  • 新しい GUID 参照列を使用して、すべての外部キー参照を再作成します

それがうまくいくことを願っています。

于 2010-10-21T17:14:19.113 に答える