2009-05-20 11 views
8

私はCRM用SDKを使用していましたが、私たちのエンティティの1つのインスタンスの束にPKを印刷しました。私はデータベースのフィルタリングされたビューでそれを繰り返し、同じ答えを得ました:MS Dynamics CRM - データベースGUID

 
    1a6c691d-391a-de11-8b0e-0050568407cb 
    bd7b0ff0-391a-de11-8b0e-0050568407cb 
    ed272bfe-391a-de11-8b0e-0050568407cb 
    ... and so on ... 

これらは有効なGUIDではないようです。 1つは、彼らは間違っている - 彼らはほぼ同じです、GUIDが旧バージョン1から持っていなかったプロパティー& 2つのGUIDはMACアドレスと時計の時間に基づいていました。しかし、GUIDの特定のニブルがGUIDのバージョンを示しているという事実です。ここでニブルは間違っています。 (3番目のセクションの最初のニブル、つまり:1a6c691d-391a - ** d ** e11-8b0e-0050568407cb) - 有効な値は1-5です(MSのGUIDジェネレータを使用してGUIDを生成 - そのスロットは常に4になります) (少なくとも私が持っているバージョンの場合))

これらのGUID、またはIDだけで、どのように知っていますか?

+0

これも気付きました。彼らは私が見ることができるどこでもガイドとして彼らのIDを参照しますが、明確な指示はありません。 – brendan

答えて

10

これはGUIDであり、連続しているということは間違いありません。これらのキーはCRMによって生成されません。 SQL Serverによって生成されます。

SQL Serverには、uniqueidentifierというGUID型があります。 NEWID()またはNEWSEQUENTIALID()のいずれかとして設定できます。 NEWID()は毎回新しいGUIDを生成します。 NEWSEQUENTIALID()は初めてGUIDを生成し、それ以降のデータベース挿入時に順次GUIDを増分します。

Dynamics CRMがNEWSEQUENTIALID()に設定されていることがわかりました。

この詳細については、こちらをご覧ください:http://www.mssqltips.com/tip.asp?tip=1600

+0

うわー、ありがとう。私はそれにまっすぐ答えをつけるつもりはないと確信していました。いくつかの調査をして、これを見つけました:http://www.fotia.co.uk/fotia/DY.19.NewSequentialId.aspx - あなたのMACを持っているのでGUIDと呼ぶことができます。 – Thanatos

+0

興味深い記事、投稿していただきありがとうございます。 CRMがNEWSEQUENTIALID()を使用する理由を説明しています。これは、db perfのメリットのためです。 –

+0

私はあなたが引用するための参照源を持っているならば@DavidMcDonaldを疑問に思います。私は明らかに挿入されたエンティティレコードのシーケンシャルな値を見ているが、私はCRMがこれらをどのように生成しているのか分からない...デフォルトの制約は定義されておらず、IDの設定もない... –

関連する問題