0

私は自分が求めているものを手に入れる方法を知っているので、これに関する知識を求めていますが、それが最善のアプローチであるかどうか疑問に思っています. プロジェクト クリープにより、かつては非常に単純なアプリケーションだったデータベースが非常に複雑になり、管理は簡単ではありませんでした。

私は今、本質的にやり直す機会を得ましたが、古いアプリケーションから新しいアプリケーションに徐々に機能を移行していきます。これには、新しいデータベースを古いデータベースと同期させておく必要があります。ありがたいことに、移行する必要がある新しいデータベースにデータが作成されないため、これは一方向で十分です。

これまでに検討したオプションは、SSIS と、単純な古い C# ADO.Net を使用した Quartz トリガー Windows サービスです。私が決定した SSIS はおそらく悪い考えです。アップサートの悪夢になる可能性があり、一時テーブルを作成してからマージする必要があり、スキーマの違いがかなり大きいため、SSIS ロジックが頭痛の種になるでしょう。ADO.Net アプローチは、データ リーダー、一括挿入、および LINQ がうまく機能するはずなので、私が傾倒している方向です。しかし、これが私の前に何人の人に影響を与えたに違いないかを考えると、もっと良い方法があるに違いないと思います. 皆さんはどのようなアプローチをしていますか?

もう少し具体的にするために、詳細は次のとおりです。

  • SQL Server 2008 R2
  • 約 30 のテーブルで ~200 万行 -> ~20 のテーブル
  • データベースはそれぞれ、異なる認証情報を持つ完全に別個のデータベース サーバー上にあります。

どうもありがとう

4

1 に答える 1

1

このシナリオを仮定しましょう:

S_old: your 'old' server
S_new: your 'new' server
db_old: your 'old' database
db_new: your 'new' database

解決策は、db_olds_old から s_new: へのバックアップと復元ですdb_old_bk。次に、s_new両方のデータベース (db_old_bkおよびdb_new) にアクセスできます。この時点で、t-sql で 'merge' sqlcommand を使用して upsert を簡単に実行できます (20 個のテーブルについて話している)。これはあなたが探しているものですか?

于 2012-07-01T12:39:01.157 に答える