3

大規模なデータベースで MSSQL マージ レプリケーションをセットアップしました。テーブルの 1 つに 15 億のレコードがあり、このテーブルでスナップショット エージェントがタイムアウトします。そのため、最初にテーブルのデータを .csv ファイルにエクスポートし、テーブルを切り捨ててから、スナップショット エージェントを再度実行しました。今、成功しています。スナップショットが作成され、サブスクライバーが同期された後、.csv ファイルからデータを再インポートしたいと考えています。ただし、マージ レプリケーションは、変更できない固定値で自動「ID 範囲管理」を使用します。これらの値の 1 つには、次の開始値が含まれます。テーブルに新しいレコードが挿入されるたびに、この値から 1 ずつインクリメントされます。ただし、もちろん、エクスポートされたデータには既に ID 値が含まれているため、これらの対応する ID も再度インポートしたいと考えています。

自動 ID 範囲管理を使用してこのデータを再インポートするにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

1

次のことができます。

  1. パブリッシャーに割り当てられた範囲内の .CSV ファイル内の ID を確認してください。

  2. 実行SET IDENTITY_INSERT <Table Name> ON- ID 値を挿入できるようになります

  3. テーブルにデータを挿入します。あなたがそれを行うことができる2つの方法があります:

    • ファイル全体を一度に挿入

また

  • 行のサブセットを挿入し、それがレプリケートされることを確認します。100k または 1M 行ごとにそれらを挿入する SSIS パッケージを作成し、レプリケーション エージェントを実行します。

ここに秘訣があります。レプリケーション エージェントで挿入された行、Bulk_InsertまたはBCPレプリケーション エージェントによって取得されない行です。そのため、レプリケーション エージェントを実行する前にsp_addtabletocontents Table_Name、BCP をFIRE_TRIGGERSオプションで実行または実行します。

4 . SET IDENTITY_INSERT OFF` を実行します - ID 値の挿入を禁止します

10 個のサンプル行でテストしてから、両方のシステムをリセットできます。

于 2013-05-26T16:43:58.400 に答える