如何进行SqlServer 实时数据同步及监控

dlsun 2010-01-09 04:10:25
两个需求:
1、两个产品(产品A,产品B)均使用SqlServer2005,对通用业务数据部分做数据同步,即在产品A中对数据进行修改,产品B中的数据自动进行实时更新,如何处理?。
2、产品B中的数据同步更新时产品B客户端程序需要实时进行处理(客户端程序不允许关闭,此情况下如何获取表更新,性能最好)。
...全文
432 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
HappyQQ 2010-01-10
  • 打赏
  • 举报
回复
触发器.
lao_bulls 2010-01-10
  • 打赏
  • 举报
回复
mark.
dawugui 2010-01-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 dlsun 的回复:]
两个需求:
1、两个产品(产品A,产品B)均使用SqlServer2005,对通用业务数据部分做数据同步,即在产品A中对数据进行修改,产品B中的数据自动进行实时更新,如何处理?。
2、产品B中的数据同步更新时产品B客户端程序需要实时进行处理(客户端程序不允许关闭,此情况下如何获取表更新,性能最好)。

[/Quote]
触发器吧,针对产品A,产品B相关的表做触发器.参考如下:

--触发器的操作1

create table 化验室纱组(本厂编号 int,客户 int,色号 int,纱支 int)
create table 化验室布组(本厂编号 int,客户 int,色号 int,布类 int)
go
create trigger my_trig on 化验室纱组 for insert ,update ,delete
as
if not exists(select 1 from inserted)
delete 化验室布组 from deleted t where 化验室布组.本厂编号 = t.本厂编号
else if not exists(select 1 from deleted)
insert into 化验室布组(本厂编号 ,客户 ,色号) select 本厂编号 ,客户 ,色号 from inserted
else
update 化验室布组 set 客户 = t.客户 , 色号 = t.色号 from inserted t where 化验室布组.本厂编号 = t.本厂编号
go

--1、insert 对化验室纱组插入数据,然后查看化验室布组表的数据
insert into 化验室纱组 values(1 , 2 , 3 , 4)
insert into 化验室纱组 values(5 , 6 , 7 , 8)
go
select * from 化验室布组
/*
本厂编号 客户 色号 布类
----------- ----------- ----------- -----------
1 2 3 NULL
5 6 7 NULL

(所影响的行数为 2 行)
*/

--2、update , 更改化验室纱组表中本厂编号=1的色号=6
update 化验室纱组 set 色号 = 6 where 本厂编号 = 1
go
select * from 化验室布组
/*
本厂编号 客户 色号 布类
----------- ----------- ----------- -----------
1 2 6 NULL
5 6 7 NULL

(所影响的行数为 2 行)
*/

--3、delete 化验室纱组表中本厂编号=1的那条数据
delete from 化验室纱组 where 本厂编号 = 1
go
select * from 化验室布组
/*
本厂编号 客户 色号 布类
----------- ----------- ----------- -----------
5 6 7 NULL

(所影响的行数为 1 行)
*/

drop table 化验室纱组 , 化验室布组

Mr_Nice 2010-01-09
  • 打赏
  • 举报
回复
replication 可以达到你的要求!
bancxc 2010-01-09
  • 打赏
  • 举报
回复
事务复制?

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧