0

サーバーからの現在の値を使用して、ローカル開発データベースの静的テーブルを更新したいと考えています (VPN 経由で別のネットワーク/ドメインにアクセス)。データのインポート/エクスポート ウィザードを使用する方法を選択しましたが、通常、次の 2 つの問題のいずれかに遭遇します。

  1. 主キー違反エラーが発生し、すべてが終了します。これは、既に持っている行を挿入しようとしているためです。
  2. ウィザードで「ターゲットから削除」オプションを設定すると、値を参照している他のテーブルに行があるため、外部キー違反エラーが発生します。

私が欲しいのは、インポート/エクスポート ウィザードが存在する行を更新し、存在しない行を挿入することを意味する正しいオプション セットです (主キーに基づいて、またはキーとして使用する列を尋ねることによって)。

どうすればこれを機能させることができますか?これは、SQL Server 2005 および 2008 で実行されます (SQL Server 2000 DTS ウィザードでも問題なく動作していたことは確かです)。

4

4 に答える 4

1

管理スタジオでこれを行うことができるかどうかはわかりません。データベースの同期でRedGate SQL Data Compareを使用していくつかの良い経験をし ましたが、料金を支払う必要があります。

于 2010-02-04T09:39:02.963 に答える
1

SQL Server Database Publishing Wizardは、関心のあるテーブルの一連の SQL 挿入スクリプトをエクスポートできます。スキーマではなくデータのみをエクスポートするように指示するだけです。また、必要な drop ステートメントも作成します。

于 2010-02-04T09:49:51.700 に答える
0

1 つのオプションは、データを新しいテーブルにダウンロードしてから、次のようなコマンドを使用してターゲットを更新することです。

update target set
    col1 = d.col1,
    col2 = d.col2
from downloaded d
inner join target t on d.pk = t.pk

insert into target (col1, col2, ...)
select (d.col1, d.col2, ...) from downloaded d
where d.pk not in (select pk from target)
于 2010-02-04T08:30:00.433 に答える
0

2 番目のオプションで FK 制約を無効にし、終了後に再開すると機能します。

ただし、ID を使用して FK に含まれる pk を作成している場合は、問題が発生するため、pk 値が同じままである場合にのみ機能します。

于 2010-02-04T08:30:51.290 に答える