すべての非シーケンシャルGUIDをシーケンシャルGUIDに置き換える方法は?
-
06-07-2019 - |
質問
主キー値の大部分として、およびクラスター化インデックス(パフォーマンスに悪い)で、標準の並べ替えられていないGUIDを使用するブラウンフィールドSQL Server 2005データベースがあります。
これらを順次GUIDに変更するにはどうすればよいですか?課題の1つは、各主キーを変更するときにすべての外部キー値を置き換えることです。
このタイプの変換を実行するツールまたはスクリプトを知っていますか?
解決
newsequentialid()関数はデフォルトとしてのみ使用できることに注意してください
2列の新しいテーブルを作成します。元のテーブルのキーをこのテーブルに挿入します(他の列はそのままにしておきます)
元のテーブルに戻って、newsequantialidを使用してPKを更新します。カスケード更新がある場合は、FK自体が更新する必要があります
他のヒント
パフォーマンスに悪いことをどのように知っていますか?
GUIDの利点は、複数のプロセスが同時にレコードを作成することを心配する必要がないことです。プログラムによっては、コードを大幅に簡素化できます。
SequentialGuidsは、GuidがPKである場合のパフォーマンスに最適です。これが彼らの存在の背後にある理由です。
所属していません StackOverflow