MSSQL 同步两个数据库的示例
有数据
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 同步两个数据库的示例相关推荐
- navicat怎么备份数据和同步两个数据库
备份数据 备份数据的方式一般有两种: 通过命令行导出sql文件或者bak文件 通过可视化工具导出sql或者直接数据库传输 这里主要简单介绍两种方式的及具体操作步骤: 命令行 一.导出步骤 导出数据和结 ...
- 同步两个数据库的结构或者数据
需求:开发中常常需要将开发环境中的数据信息(表结构)同步到正式环境中的数据库,比如添加表和修改表等操作,通常是先记下,然后人工进行修改同步 现在navicat for mysql这个工具提供了这个功能 ...
- sql 定时同步两个数据库
--定时同步服务器上的数据 --例子: --测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test --服务器上的表(查询分析器连接到服务器上创建) ...
- Navicat怎样同步两个数据库中的表
开发中通常有测试数据库和正式数据库,在测试数据库对表添加了字段的话,总不能一条条改过去. 1.打开Navicat,选择工具----结构同步. 2.左右两边选择要对比的连接以及数据库 3.点击对比,然后 ...
- sqlserver 两个数据库同步
以下实现复制步骤(以快照复制为例) 运行平台SQL SERVER 2005 一.准备工作: 1.建立一个 WINDOWS 用户,设置为管理员权限,并设置密码,作为发布快照文件的有效访问用户. 2.在S ...
- 比较和同步两个SQL Server数据库之间的图像
介绍 (Introduction) Sometimes we lose data by mistake and we want to compare the data with older backu ...
- SQL Compare教程:工作示例——比较和部署两个数据库(下)
SQL Compare是一款比较和同步SQL Server数据库结构的工具.现有超过150,000的数据库管理员.开发人员和测试人员在使用它.当测试本地数据库,暂存或激活远程服务器的数据库时,SQL ...
- php mysql两个表合并_php操作mysql两个数据库中表的数据同步
题记: 我们开发当中经常会遇到,数据同步.比如将teaching数据库中area表的数据同步到study数据库中zone表中. 备注:这两个数据库不同,数据表名字也不同,但数据表的结构相同.不同表结构 ...
- 使用Red Gate Sql Data Compare 数据库同步工具进行SQL Server的两个数据库的数据比较、同步...
Sql Data Compare 是比较两个数据库的数据是否相同.生成同步sql的工具. 这一款工具由Red Gate公司出品,我们熟悉的.NET Reflector就是这个公司推出的,它的SQLTo ...
- nodejs操作sqlserver数据_nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例...
本文实例讲述了nodejs基于mssql模块连接sqlserver数据库的简单封装操作.分享给大家供大家参考,具体如下: 注意:开启sqlserver服务器允许远程连接的步骤,自行百度,很多经验,no ...
最新文章
- SpringMVC学习06之SSM整合(一)
- 【vue-number-scroll】数字逐渐增加或者减少的滚动解决方案
- TypeScript—快速入门
- c语言标准整形,C语言整形数值范围问题
- IoT -- (五) IoT都有哪些通信协议
- Fish Redux 使用指南
- esxi备份,datastore,vmdk
- linux命令passwd各个参数含义
- .NET : 如何理解字符串和它的字节表现形式
- SpringBoot - 日志选择与实现
- 【docker】查看docker镜像的版本号TAG,从远程仓库拉取自己想要版本的镜像
- php之include的使用
- delphi调用https
- H264编码基础概念+格式分析
- 人类自然语音频率范围
- 练习 P1957 口算练习题
- java 学习7.13 正则表达式 Pattern和Matcher类 Math类 Random类 System类 BigDecimal类 Date类 SimpleDateFormat类 Cale
- 华为首次自曝“天才少年”成果:入职不到一年算法研究用于千万台 Mate/P 系列手机,网友:值 200 万年薪
- 车载相机IQ调试策略
- 利用 matplotlib 制作条形图