2009-08-11 65 views
0

我處於一個想要使用許多數據庫的場景。一些在我的項目中,一些在外部。我的應用程序會將數據從外部數據庫(駐留在遠程機器中的數據,我知道ip和用戶憑據)傳輸到我的臨時數據庫。我想創建該數據庫中的表到我的數據庫。什麼是最好的方法來做到這一點?我會使用ASP.NET 3.5。任何建議像WCF或Web服務?將數據從遠程數據庫傳輸到本地數據庫的最佳方法

回答

2

你必須回答自己一些問題:

  1. 是源的架構和目標 數據庫是否穩定?
  2. 您可以在同步期間買得起停機嗎?
  3. 您是否傳輸數據和結構或僅傳輸數據?
  4. 您需要多長時間一次同步? (每天一次或總是最近的數據)

答案取決於這個問題,但一個簡單的解決方案是使用SMO和"Transfer" task

 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(); 
2

我會詳細說明什麼理查德&克里斯說 -

複製是一組用於複製技術 和分發數據,並從一個數據庫到另一 數據庫 對象,然後 數據庫之間同步到保持一致性。使用複製 ,您可以分發 數據到不同的位置,並 遠程或移動用戶在本地和 廣域網,撥號 連接,無線連接,並 互聯網。

事務複製通常在服務器到服務器方案 需要高吞吐量, 包括用於 :改進的可擴展性和 可用性;數據倉庫和 報告;整合來自 多個網站的數據;整合 異構數據;並卸載 批處理。合併複製爲 主要爲移動 應用程序或分佈式服務器 應用程序具有可能的數據 衝突。常見場景包括: 與移動用戶交換數據;消費者銷售點(POS) 應用程序;以及來自多個站點的數據集成 。快照 複製用於爲事務性和 合併複製提供 初始數據集;它也可以用於 當完成刷新的數據是 適當。通過這三種類型的 複製,SQL Server爲您的 企業中的數據同步提供了一個功能強大且靈活的系統。

除了複製,在SQL Server 2008中,您可以通過使用Microsoft Sync Framework and Sync Services爲 ADO.NET sychronize 數據庫。用於ADO.NET的同步服務 提供了一種直觀而靈活的API ,您可以使用它來構建目標離線和協作 方案的應用程序 。

相關問題