1

SQL Server 2008 を使用して DB を作成しています。

この DB は 2 つの国で使用され、ある時点 (毎日) で同期されます。これを実現するためにレプリケーション サービスを使用します。

ほとんどのテーブルは、ID インクリメントを持つ Int 列を使用しています。ただし、展開されるとテーブルは空になるため、両方の国に ID 1、2、および息子の行が含まれます。以前にレプリケーションを使用したことがないので、テーブルが同期されたときにエラーが発生するかどうかを知りたいですか?

代わりに GUID データ型を使用する必要がありますか?

4

3 に答える 3

1

ID列の複製(MSDN):

レプリケーションには、次の3つのID範囲管理オプションがあります。

  • 自動。サブスクライバーでの更新を伴うマージレプリケーションおよびトランザクションレプリケーションに使用されます...

  • マニュアル。サブスクライバーでの更新なしのスナップショットおよびトランザクションレプリケーションに使用されます...

  • なし。このオプションは、下位互換性のためにのみ推奨されます...

IDENTITYしたがって、はい、レプリケーションに関する情報を読み、自分にとって意味のあるオプションを選択すれば、引き続き使用できます。

自動では、各サーバーが使用可能なID値の範囲を取得し、必要に応じて個々の値を渡します。範囲が完全に使い果たされないように十分な頻度で同期が行われる場合、この詳細に気付くことはありません。

これにより、必要に応じて後でスケールアウトできます。たとえば、MOD一方のサーバーが奇数の値を渡し、もう一方のサーバーが偶数の値を渡すスキームとは対照的に、このようなスキームに3番目のサーバーを簡単に追加することはできません。

于 2012-12-10T15:28:42.373 に答える
0

ユーザーが更新できるすべてのテーブルにdeviceIDフィールドを追加することを検討してください。各デバイスがPKの一部として独自のIDを使用して変更を行うため、デバイス間で競合が発生することはありません。

于 2012-12-10T18:30:29.643 に答える
0

あなたの説明によると、いわゆる Merge レプリケーションを実装したいと思われます。SQL Server では ID を GUID に変更する必要はありませんが、変更しない場合、SQL サーバーは各テーブルに rowguid という別の列を自動的に追加し、元の ID 列が重複してしまう可能性があります。これを回避するには、サーバーに mod 2 ID を割り当てることができます。

私の意見では、ID に GUID を使用するのが最も理にかなっています。ID 列に ROWGUIDCOL プロパティを設定することを忘れないでください。幸運を。

関連する MSDN: http://technet.microsoft.com/en-us/library/ms152746.aspx

于 2012-12-10T14:51:25.220 に答える