/*--同步两个数据库的示例  
   
  有数据  
  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--属性--启动类型--选择"自动启动"--确定.  
   
   
   
  上面写了两种同步方法,实际使用时,只需要其中任意一种就行了  
   
  如果数据库在同一实例中,则只需要同步处理的部分,并且将处理语句中涉及到的服务器名去掉,即只要:  
   
  库名.dbo.表名  

MSSQL 同步两个数据库的示例相关推荐

  1. navicat怎么备份数据和同步两个数据库

    备份数据 备份数据的方式一般有两种: 通过命令行导出sql文件或者bak文件 通过可视化工具导出sql或者直接数据库传输 这里主要简单介绍两种方式的及具体操作步骤: 命令行 一.导出步骤 导出数据和结 ...

  2. 同步两个数据库的结构或者数据

    需求:开发中常常需要将开发环境中的数据信息(表结构)同步到正式环境中的数据库,比如添加表和修改表等操作,通常是先记下,然后人工进行修改同步 现在navicat for mysql这个工具提供了这个功能 ...

  3. sql 定时同步两个数据库

    --定时同步服务器上的数据 --例子: --测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test --服务器上的表(查询分析器连接到服务器上创建) ...

  4. Navicat怎样同步两个数据库中的表

    开发中通常有测试数据库和正式数据库,在测试数据库对表添加了字段的话,总不能一条条改过去. 1.打开Navicat,选择工具----结构同步. 2.左右两边选择要对比的连接以及数据库 3.点击对比,然后 ...

  5. sqlserver 两个数据库同步

    以下实现复制步骤(以快照复制为例) 运行平台SQL SERVER 2005 一.准备工作: 1.建立一个 WINDOWS 用户,设置为管理员权限,并设置密码,作为发布快照文件的有效访问用户. 2.在S ...

  6. 比较和同步两个SQL Server数据库之间的图像

    介绍 (Introduction) Sometimes we lose data by mistake and we want to compare the data with older backu ...

  7. SQL Compare教程:工作示例——比较和部署两个数据库(下)

    SQL Compare是一款比较和同步SQL Server数据库结构的工具.现有超过150,000的数据库管理员.开发人员和测试人员在使用它.当测试本地数据库,暂存或激活远程服务器的数据库时,SQL ...

  8. php mysql两个表合并_php操作mysql两个数据库中表的数据同步

    题记: 我们开发当中经常会遇到,数据同步.比如将teaching数据库中area表的数据同步到study数据库中zone表中. 备注:这两个数据库不同,数据表名字也不同,但数据表的结构相同.不同表结构 ...

  9. 使用Red Gate Sql Data Compare 数据库同步工具进行SQL Server的两个数据库的数据比较、同步...

    Sql Data Compare 是比较两个数据库的数据是否相同.生成同步sql的工具. 这一款工具由Red Gate公司出品,我们熟悉的.NET Reflector就是这个公司推出的,它的SQLTo ...

  10. nodejs操作sqlserver数据_nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例...

    本文实例讲述了nodejs基于mssql模块连接sqlserver数据库的简单封装操作.分享给大家供大家参考,具体如下: 注意:开启sqlserver服务器允许远程连接的步骤,自行百度,很多经验,no ...

最新文章

  1. SpringMVC学习06之SSM整合(一)
  2. 【vue-number-scroll】数字逐渐增加或者减少的滚动解决方案
  3. TypeScript—快速入门
  4. c语言标准整形,C语言整形数值范围问题
  5. IoT -- (五) IoT都有哪些通信协议
  6. Fish Redux 使用指南
  7. esxi备份,datastore,vmdk
  8. linux命令passwd各个参数含义
  9. .NET : 如何理解字符串和它的字节表现形式
  10. SpringBoot - 日志选择与实现
  11. 【docker】查看docker镜像的版本号TAG,从远程仓库拉取自己想要版本的镜像
  12. php之include的使用
  13. delphi调用https
  14. H264编码基础概念+格式分析
  15. 人类自然语音频率范围
  16. 练习 P1957 口算练习题
  17. java 学习7.13 正则表达式 Pattern和Matcher类 Math类 Random类 System类 BigDecimal类 Date类 SimpleDateFormat类 Cale
  18. 华为首次自曝“天才少年”成果:入职不到一年算法研究用于千万台 Mate/P 系列手机,网友:值 200 万年薪
  19. 车载相机IQ调试策略
  20. 利用 matplotlib 制作条形图

热门文章

  1. init函数的注意事项和细节
  2. 简单的php cms,30个很棒的PHP开源CMS内容管理系统
  3. python字符串函数使用_Python字符串函数用法
  4. matlab对比r语言,R语言与matlab循环时间对比
  5. Android-EventBus 使用以及区别
  6. link和@import区别
  7. 美景听听Ai语音导游,助力华为荣耀PLAY手机发布
  8. 如何从零设计结构清晰、操作友好的权限管理模块
  9. oracle从子表取出前几行数据:
  10. puppet经典应用