1

同じ期間、2 つの異なる SQL Server データベースから一連のオブジェクトを取得する必要がある状況があります。

したがって、DB1 にCarテーブルがあり、DB2 にテーブルがある場合、ある時点までのすべてをPerson取得したいと考えています。CarsPersonst

ただし、日付を処理したくない (閏秒の問題などに遭遇したくありません)。幸いなことに、両方のデータベースでRowVersion列が使用されます。理想的には、このようなものを、ある時点/特定のグローバル状態を表すRowVersion同時実行トークン ( my ) として使用して、レコードを比較できるようにしたいと考えています。t

残念ながら、RowVersion列はデータベースに関連しているため、異なるデータベース間で比較することはできません。

ここでより良い解決策はありますか?日付を使用したくないことに過剰反応していますか?

提案を歓迎します:-)

4

2 に答える 2

1

複数の個別のシステムについて話しているため、残念ながら選択肢は限られています。すべての日時を GMT に格納することから始めました。

それを超えて、datetimeここで使用するのに適切な唯一のデータ型です。はい、複数のシステム間で、数分の 1 秒単位でずれます。これは、正常で共通の時刻同期が行われていることを前提としています。ただし、クロックが正確に同期されていたとしても、レコードを更新するときの単純なネットワーク レイテンシによって時間差が発生することもあります。

RowVersionあなたが指摘した理由により、あなたを助けることはできません。

他の唯一の方法は、いずれかのデータベースのレコードに (「物理的」ではなく論理的に) 関連付けられ、使用できる共通の日時または行バージョンを持つ「同期」テーブルを一方または他方のデータベースに持つことです。これにより、クエリの複雑さが少し増しますが、とにかく、クロスデータベースクエリを既に実行しているようです。

于 2012-07-31T12:52:01.663 に答える
0

あなたが扱っている特定の期間はありますか?もしそうなら、日付を処理する代わりに、共通の「TimePeriod」テーブルを各レコードにリンクできますか?

于 2012-07-31T03:27:44.920 に答える