私は、多くのデータベースを操作したいシナリオにいます。一部は私のプロジェクトにあり、一部は外部にあります。私のアプリケーションは、外部データベース(リモートマシンに存在するもの。IPとユーザーの資格情報を知っている)から一時データベースにデータを転送します。そのデータベースのテーブルを自分のデータベースに作成したいと考えています。これを行うための最良の方法は何ですか? 私は ASP.NET 3.5 で作業します。WCF や Web サービスなどの推奨事項はありますか?
4 に答える
リチャードとクリスが言ったことを詳しく説明します -
レプリケーションは、データとデータベース オブジェクトをあるデータベースから別のデータベースにコピーして配布し、データベース間で同期して一貫性を維持するための一連のテクノロジです。レプリケーションを使用すると、ローカル エリア ネットワーク、ワイド エリア ネットワーク、ダイヤルアップ接続、ワイヤレス接続、およびインターネットを介して、さまざまな場所やリモート ユーザーまたはモバイル ユーザーにデータを配布できます。
通常、トランザクション レプリケーションは、高いスループットを必要とするサーバー間のシナリオで使用されます。データ ウェアハウスとレポート。複数のサイトからのデータを統合する。異種データの統合。バッチ処理のオフロード。マージ レプリケーションは主に、データの競合が発生する可能性があるモバイル アプリケーションまたは分散サーバー アプリケーション向けに設計されています。一般的なシナリオは次のとおりです。モバイル ユーザーとのデータ交換。消費者販売時点管理 (POS) アプリケーション。複数のサイトからのデータの統合。スナップショット レプリケーションは、トランザクション レプリケーションとマージ レプリケーションの初期データ セットを提供するために使用されます。データの完全な更新が適切な場合にも使用できます。これら 3 種類のレプリケーションにより、
レプリケーションに加えて、SQL Server 2008 では、 Microsoft Sync Framework と Sync Services for ADO.NETを使用してデータベースを同期できます。Sync Services for ADO.NET は、オフラインおよびコラボレーション シナリオをターゲットとするアプリケーションの構築に使用できる直感的で柔軟な API を提供します。
いくつかの質問に答える必要があります。
- ソース データベースとターゲット データベースのスキーマは安定していますか?
- 同期中のダウンタイムを許容できますか?
- データと構造を転送しますか、それともデータのみを転送しますか?
- どのくらいの頻度で同期が必要ですか? (1 日 1 回または常に最新のデータ)
答えはこの質問によって異なりますが、単純な解決策の 1 つは、SMO と「転送」タスクを使用することです。
Server srv = default(Server);
srv = new Server();
//Reference the AdventureWorks database
Database db = default(Database);
db = srv.Databases("AdventureWorks");
//Create a new database that is to be destination database.
Database dbCopy = default(Database);
dbCopy = new Database(srv, "AdventureWorksCopy");
dbCopy.Create();
//Define a Transfer object and set the required options and properties.
Transfer xfr = default(Transfer);
xfr = new Transfer(db);
xfr.CopyAllTables = true;
xfr.Options.WithDependencies = true;
xfr.Options.ContinueScriptingOnError = true;
xfr.DestinationDatabase = "AdventureWorksCopy";
xfr.DestinationServer = srv.Name;
xfr.DestinationLoginSecure = true;
xfr.CopySchema = true;
//Script the transfer. Alternatively perform immediate data transfer
// with TransferData method.
xfr.ScriptTransfer();
データベースのレプリケーションについて読む必要があるようですね。
実際に使ったことはありませんが、Microsoft Sync Frameworkはこのようなシナリオを想定して作成されたものだと思います。