gpt4 book ai didi

c# - 如何将远程服务器数据库与本地数据库同步

转载 作者:行者123 更新时间:2023-11-30 20:00:04 25 4
gpt4 key购买 nike

我想在
期间将单个表的所有详细信息从远程服务器数据库获取到我的本地数据库页面加载事件或其他一些好的方法,应该作为后端进程发生,任何人都可以帮助我解决这个问题。

1. 在桌面和 Web 应用程序中创建的单个应用程序。
2.当用户在桌面应用程序中注册新客户时,应在启动应用程序时将新客户添加到 Web 应用程序数据库中。

注意:

服务器数据库表列可能与本地数据库略有不同。每次在服务器中添加新用户时,它应该在加载 UserPage.aspx 页面时更新本地数据库。

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

例如:假设数据库名为 sample,表名为 customer

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 用于桌面和网络应用程序。最初在网络应用程序中,
当添加新用户时,所有数据都存储在数据库中,除了
Link_id,作为服务器的响应获取并保存在本地数据库中。

谢谢。

最佳答案

我会推荐这种方法:

  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 并创建数据库链接。

关于c# - 如何将远程服务器数据库与本地数据库同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com