注释:本文主要介绍如何同步更新数据库中表的内容,例如将客户端的表的增加、删除、修改、查询都及时更新到服务器中去,主要用到触发器、创建数据库链接等技术;
一、触发器同步
介绍:两个数据库分别为April_Customer和April_Server
--创建服务器链接;查询服务器表数据:select * from LINK_TO_CUSTOMER.April_Server.dbo.April_User;
--注意启动服务:Distributed   Transaction   Coordinator分布式数据库服务
exec   sp_addlinkedserver     'link_to_customer','','SQLOLEDB','192.168.0.88'
exec   sp_addlinkedsrvlogin   'link_to_customer','false',null,'sa','wsm'
--新增同步不能执行原因:SQL2005不允许循环分布式应用,即服务器和客户端在同一机器上
alter  trigger  Add_customer_user  on  dbo.Aprl_Customer_User
for insert
as
set   xact_abort   on
insert   LINK_TO_CUSTOMER.April_Server.dbo.April_User(id,name,tel)
select   id,name,tel   from   inserted
go
--修改同步参数:a指客户端已经更新的表;b指待更新的表;LINK_TO_CUSTOMER指链接服务器;
create   trigger   Edit_customer_user   on   dbo.Aprl_Customer_User
for   update
as
set   xact_abort   on
update  b set   name=a.name,tel=a.tel
from LINK_TO_CUSTOMER.April_Server.dbo.April_User  b,inserted  a
where  b.id=a.id
go
--删除同步参数:a指客户端已经删除的表;b指待删除的表;LINK_TO_CUSTOMER指链接服务器;
create   trigger   Delete_customer_user   on   dbo.Aprl_Customer_User
for   delete
as
set   xact_abort   on
delete   b
from   LINK_TO_CUSTOMER.April_Server.dbo.April_User  b,deleted  a
where   b.id=a.id   

*--同步两个数据库的示例  
   
有数据  
srv1.库名..author有字段:id,name,phone,  
srv2.库名..author有字段:id,name,telphone,adress  
   
要求:  
srv1.库名..author增加记录则srv1.库名..author记录增加  
srv1.库名..author的phone字段更新,则srv1.库名..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.name<>i.name   or   b.telphone<>i.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--属性--启动类型--选择"自动启动"--确定.

转载于:https://www.cnblogs.com/wsmltyl/archive/2010/06/10/1755695.html

分布式数据库的应用(一)相关推荐

  1. 开源分布式数据库中间件

    转自:https://www.csdn.net/article/2015-07-16/2825228 MyCat:开源分布式数据库中间件 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性 ...

  2. tp3分布式session mysql_分布式数据库支持

    ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型. 配置`DB_DEPLOY_TYPE` 为1 可以采用分布式数据库支持.如果采用分布式数据 ...

  3. 基于Sql Server 2008的分布式数据库的实践(一)

    原文 基于Sql Server 2008的分布式数据库的实践(一) 配置Sql Server 2008(Win7) 1.打开SQL server2012,使用windows身份登录 2.登录后,右键选 ...

  4. 区块链技术的本质是分布式数据库

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链技术是基于比特币应用提出的一个概念,他是一个融合了多种技术的一个集成式创新.目前区块链的应用早已不仅仅局限在比特币 ...

  5. 重磅!分布式数据库解决方案Apache ShardingSphere毕业成为顶级项目

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 全球最大的开源软件基金会 Apache 软件基金会(以下简称 Ap ...

  6. 网易分布式数据库多活架构的演进与实践

    本文根据周劲松老师在[deeplus直播第228期]线上分享演讲内容整理而成. 周劲松 网易杭州研究院资深研发工程师 来自网易数据科学中心,目前是网易分布式数据库DDB及网易数据运河NDC项目负责人. ...

  7. 【CSTC白皮书】分布式数据库发展路径研究(附下载)

    来源:中国软件测评中心本文多图,建议阅读5分钟本文探讨分布式数据库发展路径研究. 公众号(DatapiTHU)后台回复"20210304"获取完整版PDF文件 分布式数据库是传统数 ...

  8. 从分布式数据库的CAP特性说起

    在传统RDBM系统中,对于事务处理必须保证为一个完整的逻辑处理过程,具备ACID四个特性,A Atonomy 事务处理的原子性,要么成功,要么失败 ,C Consistency 一致性,数据库必须保持 ...

  9. 79期:Faceu的分布式数据库实战访谈

    云周刊 本周要点 查看更多 [大会回顾]2016云栖大会南京峰会 2016云栖大会南京将于4月27日举行.本届大会"大数据"."云安全"."云市场&q ...

  10. 一款低延迟的分布式数据库同步系统--databus

    每次看到马路对面摩托罗拉的大牌子,都想起谷歌125亿美元收购摩托罗拉移动,后来又以29亿美元卖给联想的事情.谷歌所做的决策都比较考虑长远利益,在这串交易中,谷歌获得了摩托罗拉最有价值的几千项专利,稳健 ...

最新文章

  1. VC++从txt文本中读取字符和数字
  2. 常问面试题总结(JAVA基础篇)
  3. 【算法题1】上台阶问题
  4. 在python中使用关键字define定义函数_python等价于'define func()'或如何在python中注释掉函数调用...
  5. go项目中使用makefile文件
  6. python基础字符串(二)
  7. SAP License:PS中的成本控制
  8. java远程执行命令报错java.io.IOException: Cannot run program “ifconfig“: error=2, No such file or directory
  9. 同步异步-阻塞非阻塞
  10. DepthMap(1):D. Eigen (NIPS2014)
  11. 百度地图API之根据经纬度查询地址信息(Android)
  12. 离线安装 Enhanced Class Decompiler
  13. 王家林大数据资源共享
  14. jpress-项目升级
  15. 利用EXCEL批量重命名文件
  16. VsCode常用插件和快捷键
  17. 联邦学习安全防御之差分隐私
  18. node.js基于微信小程序的外卖订餐系统 uniapp 小程序
  19. MySQL之mysqlcheck、check、optimize和analyze
  20. Android 选择器 PickerView实例,时间选择器、地址选择器、单项选择器、多项选择器自定义布局

热门文章

  1. php进度条插件,分享8款优秀的 jQuery 加载动画和进度条插件_jquery
  2. vscode 配置 pcl头文件库
  3. 操作系统上机题目(多进程2)
  4. 转载|网络编程中阻塞式函数的底层逻辑
  5. 最短公共子序列_最短公共超序列
  6. 处理文件、摄像头和图形用户界面
  7. 面向对象(匿名内部类与有名字内部类的比较)
  8. 搞ACM的你伤不起(转)
  9. HDU2066:一个人的旅行
  10. CodeForce 2A —— Winner