私の状況は次のとおりです。
- ローカル DB を使用している多数のクライアント アプリケーションがあります (MS SQL、MS Access - 申し訳ありませんが、これはエンタープライズ システムです。レガシーをサポートする必要があります...)
- クライアントの傾向については何も知りません。現在は ~10 ですが、1 年で ~100 になる可能性があります。
- これらのテーブルからのデータが中央サーバーに送られ、1 つの共通テーブルに配置されます
- 既存の (クライアント) データが変更されることがあります - 更新/削除操作を実行する必要があります
- GUID (.NET タイプ) を使用したくない
System.Guid
- MS Access で簡単に実装してサポートするのは難しい。その上、それはパフォーマンスに適していません - その共通テーブルで高速検索が必要なので、PK として使用するか、
int
または使用するとよいでしょう。long int
だから、私は欲しい:
- 衝突を避けるための固有のもの (PK として使用されます)
- うまくいけば、
int
またはlong int
- 挿入される前にクライアント側で割り当て可能である必要があります
私の現在の解決策は、次の連結からCRCを取得することです。
- プロセス ID
- バイオス日付
- ユーザー名 (文字列、ハードウェア\ユーザー関連データ)
- DateTime.Now (UNC)
現在、それは私にとってはうまくいきますが、私の目標を達成するためのより良いアプローチがあるでしょうか? コメント、提案、例、またはあなた自身の経験はありますか?
UPDATE : クライアントとサーバー間の同期は定期的なアクションであるため、1 日に 2 ~ 3 回発生する可能性があります (構成変数です)。