2014-03-12 160 views
2

我想從遠程服務器數據庫到我的本地數據庫的所有單個表的詳細信息,在頁面加載事件或其他一些好辦法,
應該發生的後端進程可以幫助我解決這個問題。
如何同步遠程服務器數據庫與本地數據庫

1.在桌面和Web應用程序中創建的單個應用程序。
2.當用戶在桌面應用程序中註冊新客戶時,應用程序啓動時應將新客戶添加到Web應用程序Db中。

注:

Server數據庫表中的列可能會與本​​地數據庫不同。 每當在服務器中添加新用戶時,它應在加載UserPage.aspx頁面時更新本地數據庫。

工具使用: ASP.NET,SQL Server 2008的

如: 讓DB名稱是樣品和表名是客戶

Table Header in Server DB: Cus_id,Cus_name,Cus_address,Cus_email,Cus_mob,Link_Id 
Table Headers in Local DB: Cus_id,Cus_name,Cus_address,Cus_email,Cus_mob,Cus_password,Link_Id 

這裏Link_id被用作桌面和web應用程序的常用功能..最初在web應用程序中,
當添加新用戶時,除了之外,所有數據都存儲在數據庫中Link_id,作爲服務器的響應並保存在本地數據庫中。

謝謝。

+0

http://stackoverflow.com/questions/22447916/how -load-data-from-remote-server-db-to-local-server-db將此鏈接作爲我的代碼的主要參考.. –

回答

6

我會推薦這種方法:

  1. 創建本地數據庫臨時表;
  2. 在您的本地數據庫中創建觸發器,以更改需要同步的表;
  3. 更新臨時表;
  4. 暫時將臨時表同步到服務器(每分鐘/小時/天,取決於您的需要);

    A)在本地數據庫中創建一個鏈接的數據庫連接。創建一個將登臺表中的數據同步到服務器數據庫的過程; B)或者使用ASP.NET通過讀取本地數據庫並寫入服務器數據庫來同步數據庫。

該解決方案比直接在ASP.NET中執行此操作更好,因爲當您的服務器存在可用性問題時,這仍然有效。

一個完整的工作示例:

create table x 
(id   numeric(18, 0) identity(1,1) not null 
, description nvarchar(1000)    not null 
) 
go 

create table x_staging 
(id   numeric(18, 0) not null 
, description nvarchar(1000) not null 
, synced  bit   not null default 0 
) 
go 

/* 
* create this one on remote server in a database called test 

create table remote_table 
(id   numeric(18, 0) identity(1,1) not null 
, source_id numeric(18, 0)    not null 
, description nvarchar(1000)    not null 
) 
go 
*/ 

create trigger x_ori on x 
after insert 
as 
begin 
    insert into x_staging 
    (id 
    , description 
    , synced 
) 
    select id 
    ,  description 
    ,  0 -- false 
    from inserted 
    ; 
end 
go 

create procedure sync 
as 
begin 
    declare @id numeric(18,0) 
    declare @description nvarchar(1000) 
    declare @x_cursor cursor 

    set  @x_cursor = cursor for 
    select id 
    ,  description 
    from x_staging 

    open @x_cursor 
    fetch next 
    from @x_cursor into @id, @description 
    while @@fetch_status = 0 
    begin 
    insert 
    into [REMOTE_SERVER].test.dbo.remote_table 
    (source_id 
    , description 
    ) 
    values 
    (@id 
    , @description 
    ) 
    ; 
    update x_staging 
    set synced = 1 
    where id = @id 
    ; 
    fetch next 
    from @x_cursor into @id, @description 
    end 

    close @x_cursor 
    deallocate @x_cursor 
end 
go 

insert 
into x 
(description 
) 
values 
('test' 
) 
go 

begin 
    exec sync; 
end 

調用sync將做同步。請注意在其他服務器上創建remote_table並創建數據庫鏈接。

+0

真的很感謝..我不知道觸發器..你能幫我解決嗎..http://stackoverflow.com/questions/22447916/how-load-data-from-remote-server-db-到本地服務器數據庫這裏是我的數據在DB –

+0

我已經完成了步驟1 ,2和3,你可以請說怎麼做第4步和A)選項.. –

+0

@farokemoahmed:看到更新的答案完整的工作代碼。 –

0

您可以使用MS同步框架2.1,它允許用戶從兩側(客戶端 - 服務器)同步......你可以安排同步樂趣呼叫

相關問題