0

私はSQL Server 2012を使用しています.2つまたは3つの値に基づいてuniqueidentifier値を生成することは可能ですか?

通常、uniqueidentifier はシステムごとに異なります。私の要件では、カスタム関数が必要です。この関数を呼び出すたびに、すべてのシステムで同じ値を取得する必要があります。

値を varbinary に変換し、その特定の部分を取得して一意の識別子を生成することを考えていました。このアプローチの良さ。

私はまだこのアプローチに取り組んでいます。

あなたの提案を提供してください。

4

2 に答える 2

0

Uniqueidentifier の標準ドキュメントは、それらがどのように生成されるかを示しています。http://www.ietf.org/rfc/rfc4122.txt

私はこれを読んで(特に 4.1.2. は、GUID の生成方法を分解するため)、おそらくタイムスタンプ コンポーネントを使用し続けますが、探しているものを提供するネットワーク ロケーション要素をハード コードします。

于 2012-08-28T06:20:39.370 に答える
0

あなたが説明するのは、値のハッシュです。関数を使用HASHBYTESして、値をハッシュにダイジェストします。ただし、定義により、サイズ M の入力をサイズ N のハッシュに縮小すると (N < M)、衝突が発生する可能性があるため、問題の定義は一意性の要件と矛盾します 。本当に一意性が必要な場合は、少なくとも一意性を考慮して要件を再定義してください。つまり、それを保証する唯一の方法は入力を正確に出力することであるため、すべてのシステムで同じ値を取得する必要があるという要件を削除する必要があります。この要件を削除すると、新しい要件が満たされます(はい、入力は考慮されませんが、考慮されませんNEWID()要件を満たすために必要があります)。

于 2012-08-28T06:33:50.537 に答える