web-dev-qa-db-ja.com

MS SQL Server行GUID列

疲れた質問のように聞こえたことをお詫びしますが、読んだフォーラムの回答やドキュメントは適切な回答を提供していないようです。

MS SQL Server 2008のRow GUID Columnプロパティの目的は何ですか?

さらに詳しく説明しましょう。この質問の回答として、「PKとしてGUIDを使用しないでください」が繰り返されるのを見ましたが、これは私にはまったく関係がないようです。 Row GUID Columnを設定した場合、そのGUID列を主キーにする必要がありますか?

元の質問を言い換えると、テーブルにGUID列があり、インデックス作成で役割を果たしていない場合、そのGUID列をRow GUID Columnとして設定することで何かを得られるでしょうか。 ?

29
instantmusic

列名の代わりに$ ROWGUID変数を使用できます。主にマージレプリケーションに使用されます。 PKのGUID列は強制されません。PKを明示的に宣言することしかできません。マージレプリケーションを実装する予定がない限り、最後の質問に対する答えは「いいえ」です。

36
suhprano

ROWGUIDCOLUMNは主に、複数の衛星データベースのテーブルの内容を1つの中央データベースに結合する必要があるレプリケーションシナリオで使用されます。

レプリケートされるテーブルにROWGUIDCOLUMNを追加すると、レプリケーションエンジンはROWGUIDCOLUMNフィールドを使用して、同じ主キー値を持つレコードを区別できます。

これは主にスムーズなレプリケーションを保証するために使用される機能であるため、この列を主キーとして使用することは避けてください。主キーは、管理下にあり、選択したDBエンジンの特定の機能の運用特性に影響を与えない論理的なビジネスエンティティである必要があります。

8
Rich Turner

RowGUID列はレプリケーションに使用されます。レプリケーションエンジンが正しくマージできるようにします。レプリケーションが有効な場合、この列はRowGUID列がまだないテーブルに追加されます。

レプリケーションを実装する予定がない限り、それを使用しても何も得られません。これは、カラムのデフォルト値としてnewsequentialid()を設定することと同じです。

2
Stuart Thompson

それが主キーになることを強制するのではなく、プロパティはフィールドが自動的に更新されるかどうかを決定するだけです。アプリケーションでGUID=を作成して送信する場合は、このプロパティをfalseに設定します。それ以外の場合はtrueに設定し、データベースに自動的に作成させます。フィールドがクラスター化インデックスの場合デフォルト値がNEWSEQUENTIALID()であることを確認してください。

0
HLGEM

いいえ、それはPKとしてそれを強制しません。これは、2番目のuniqueidentifierを作成して、行として指定できないことを意味しますGUID Column

0
Conrad Frix