SQLSEVER 不同服务器下两个结构相似的表实现数据同步(触发器)
1、建立链接服务器
在ServerA 中创建指向ServerB的链接服务器,并做好账号映射。addlinkedserver存储过程创建一个链接服务器,参数详情参见官方文档。
第1个参数LNK_ServerA是自定义的名称;第2参数产品名称,如果是SQL Server不用提供;第3个参数是驱动类型;第4个参数是数据源,这里写SQL Server服务器地址
exec sp_addlinkedserver 'LNK_ServerB_DatabaseB','','SQLNCLI','192.168.1.101'
配置链接服务器后,默认使用同一本地账号登陆远程数据库,如果账号有不同,还需要进行账号映射。sp_addlinkedsrvlogin参数详情参见官方文档。
第1个参数同上;第2个参数false即使用后面参数提供的用户密码登陆;第3个参数null使所有本地账号都可以使用后面的用 户密码来登陆链接服务器,如果第3个参数设置为一个本地SQL Server登陆用户名,那么只有这个用户才可以使用远程账号登陆链接服务器;最后两个是登录远程服务器的用户和密码。
exec sp_addlinkedsrvlogin 'LNK_ServerB_DatabaseB','false',null,'user','password' 如果要删除以上配置可以如下
exec sp_droplinkedsrvlogin 'LNK_ServerB_DatabaseB',null
exec sp_dropserver 'LNK_ServerB_DatabaseB','droplogins'
也可以取SQLSEVER Stduio 里面手动删除,在服务器对象下\链接服务器中可以找到配置好的链接服务器 2、建立好了再用触发器来实现连个不同表结构的数据同步。
示例:在服务器A建立一个student_01表,有name,age,class列,同样在服务器B上建立一个student表,表结构一样。
通过新增或修改服务器A的数据,同时新增或修改服务器B的数据
定义的链接服务器名为[LINK_DB]
CREATE trigger [dbo].[trig_to_DB]
on [dbo].[student_01]
after insert ,update
as
begin
declare @name varchar(50);
declare @age int;
declare @class varchar(50);
declare @tname varchar(50);
select @name = name , @age =age , @class = class
from inserted
if(len(@name)!= 0)
select @tname =name from [LINK_DB].[数据库名].[dbo].[student] where name = @name
if(LEN(@tname)!= 0)
begin
update [LINK_DB].[数据库名].[dbo].[student] set age = @age,class = @class where name = @tname
end
else
begin
insert into [LINK_DB].[数据库名].[dbo].[student](name,age,class) values(@name,@age,@class)
end
end
保存成功过后,新增或修改服务器A的student_01表的数据,服务器B中表student 的数据也会新增或修改
SQLSEVER 不同服务器下两个结构相似的表实现数据同步(触发器)的更多相关文章
- oracle triggers 实现两个结构相同的表的数据级联更新操作
首先创建两个结构相同的表 -- Create table create table TABLE_TEMP ( userid NUMBER not null, username NVARCHAR2(50 ...
- [原]用SQL比较两张结构完全相同的表数据
前几天面试遇到一个比较有意思的问题,就是有两张结构完全相同的表A和B,但是这两张表属于不同的业务流程,经过一段时间后发现两张表的数据不能完全匹配,有可能A比B多,也可能B比A多,或者两种可能同时存在, ...
- SQLSEVER 同台服务器下不同表 触发器实现数据实时同步
触发器的使用: 1.首先建立两个相同结构的表,两个表明的列的名称不同. student_01 字段 name ; 字段 age ; 字段 class ; student_02 字段 ...
- linux下两台服务器文件实时同步方案设计和实现
inux下两台服务器文件实时同步方案设计和实现 假设有如下需求: 假设两个服务器: 192.168.0.1 源服务器 有目录 /opt/test/ 192.168.0.2 目标服务器 有目录 /o ...
- 什么是CS和BS结构,两种结构的区别
什么是CS和BS结构,两种结构的区别 什么是C/S和B/S结构? C/S又称Client/Server或客户/服务器模式.服务器通常采用高性能的PC.工作站或小型机,并采用大型数据库系 ...
- 【转存】阿里云服务器下 LAMP 环境配置 —— 基于 CentOS 6.3
阿里云服务器下 LAMP 环境配置 —— 基于 CentOS 6.3 Posted on 2016年2月10日 by 学院君 1.Apache 配置 —————————————————– vi / ...
- Linux网络栈下两层实现
http://www.cnblogs.com/zmkeil/archive/2013/04/18/3029339.html 1.1简介 VLAN是网络栈的一个附加功能,且位于下两层.首先来学习Linu ...
- linux服务器下添加字体
版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 引言:这两天在开发一个动态生成海报的东西(图片拼接,图片水印),开发在windows下没有问题,图片和文字都能正常的生成出来. ...
- 【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型
[Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698. ...
随机推荐
- Spring cloud微服务安全实战-3-11API安全机制之登录
流控.认证.审计.授权以上都做了初步的简单的实现. 之前写的代码,base64加密了用户名和密码. 缺点1:每次请求都要带用户名密码 增加了泄露的风险. 每次传上来用户名和密码都要check验证.ch ...
- source insight 使用配置(私人)
1.输入两个空格,两个空格全消失,前后的字粘在一起显示,不想这样,就取消下图的勾.
- DECODE函数和CASE WHEN 比较
http://blog.csdn.net/zhangbingtao2011/article/details/51384393 一,DECODE函数 其基本语法为: DECODE(value, if1, ...
- 模仿系统C键功能菜单
1.可以拖拽C键 2.依赖zepto 3.点击弹出菜单 效果预览:
- 【原生JS插件】LoadingBar页面顶部加载进度条
先展示一下已经实现的效果: 预览地址:http://dtdxrk.github.io/js-plug/LoadingBar/index.html 看到手机上的浏览器内置了页面的加载进度条,想用在pc上 ...
- RabbitMQ官方教程一Hello World(GOLANG语言实现)
介绍 RabbitMQ是消息中间件:它接受并转发消息. 您可以将其视为邮局系统:将要发送的邮件放在邮箱中时, 可以确保邮递员最终将邮件传递给收件人. 以此类推,RabbitMQ是一个邮箱,一个邮局和一 ...
- JavaFX窗体设置无边框
public void start(Stage stage) throws Exception { longStart(); Parent root = FXMLLoader.load(getClas ...
- xticks,yticks
原本的图片如下所示: 如果加上这样的语句: import matplotlib.pyplot as plt plt.xticks([]),plt.yticks([]) 显示结果就为:
- java后端通过request对象获取请求的ip地址工具类
package cn.zgjkw.battalion.util; import org.apache.log4j.Logger; import javax.servlet.http.HttpServl ...
- ROS中的通信机制
http://www.ros.org/core-components/ Communications Infrastructure At the lowest level, ROS offers a ...