加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何让MSSQL两个数据库的内容同步

发布时间:2023-01-08 12:31:44 所属栏目:MsSql教程 来源:未知
导读: --引用邹建
/*--同步两个数据库的示例
测试环境及同步要求:
有数据库服务器srv1和srv2,两台电脑能互相访问,有数据
srv1.库名..author有字段:ID,Name,phone,
srv2.库名..author有字段:ID,Na

--引用邹建

/*--同步两个数据库的示例

测试环境及同步要求:

有数据库服务器srv1和srv2,两台电脑能互相访问,有数据

srv1.库名..author有字段:ID,Name,phone,

srv2.库名..author有字段:ID,Name,telphone,adress

要求:

srv1.库名..author增加记录则srv2.库名..author记录增加

srv1.库名..author的phone字段更新,则srv2.库名..author对应字段telphone更新

--*/

--大致的处理步骤

--1.在 srv1 上创建连接服务器,以便在 srv1 中操作 srv2,实现同步

exec sp_addlinkedserver 'srv2','','SQLOLEDB','srv2的sql实例名或ip'

exec sp_addlinkedsrvlogin 'srv2','false',null,'用户名','密码'

go

--2.在 srv1 和 srv2 这两台电脑中,启动 msdtc(分布式事务处理服务),并且设置为自动启动

我的电脑--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--属性--启动--并将启动类型设置为自动启动

go

--3.实现同步处理

--a.在srv1..author中创建触发器,实现数据即时同步

--新增同步

create trigger tr_insert_author On author

for insert

as

set xact_abort On

insert srv2.库名.dbo.author(ID,Name,telphone)

select ID,Name,telphone from inserted

go

--修改同步

create trigger tr_update_author On author

for update

as

set xact_abort On

update B set Name=i.Name,telphone=i.telphone

from srv2.库名.dbo.author B,inserted i

where B.ID=i.ID

go

--删除同步

create trigger tr_delete_author On author

for delete

as

set xact_abort On

delete B

from srv2.库名.dbo.author B,deleted d

where B.ID=d.ID

go

--3.实现同步处理的方法2,定时同步

--在srv1中创建如下的同步处理存储过程

create proc p_process

as

--更新修改过的数据

update B set Name=i.Name,telphone=i.telphone

from srv2.库名.dbo.author B,author i

where B.ID=i.ID And

(B.Namei.Name or B.telphonei.telphone)

--插入新增的数据

insert srv2.库名.dbo.author(ID,Name,telphone)

select ID,Name,telphone from author i

where not exists(

select * from srv2.库名.dbo.author where ID=i.ID)

--删除已经删除的数据(如果需要的话)

delete B

from srv2.库名.dbo.author B

where not exists(

select * from author where ID=B.ID)

go

--然后创建一个作业定时调用上面的同步处理存储过程就行了

企业管理器

--管理

--SQL Server代理

--右键作业

--新建作业

--"常规"项中输入作业名称

--"步骤"项

--新建

--"步骤名"中输入步骤名

--"类型"中选择"Transact-SQL 脚本(TSQL)"

--"数据库"选择执行命令的数据库

--"命令"中输入要执行的语句: exec p_process

--确定

--"调度"项

--新建调度

--"名称"中输入调度名称

--"调度类型"中选择你的作业执行安排

--如果选择"反复出现"

--点"更改"来设置你的时间安排

然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行

设置方法:

我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章