原文:http://blog.sina.com.cn/s/blog_59c41d0d0100esja.htmlhtml
最进在作项目时遇到了一个比较棘手的问题,有两个数据库分别部署在不一样的服务器上,系统要求两个服务器实现数据同步操做即热备份,因而就不能不用到SQL触发器这一武器了,当初也考虑了几种解决方案:好比程序中同时操做两个库或写一个外挂程序执行数据库定时任务,但这些方案须要频繁的链接数据库,特别是有张实时数据的表,天天都会产生海量的数据,程序中频繁定时的查询操做势必严重影响系统运行效率,都没有触发器批处理语句来的更直接些,因此最终决定使用触发器实现。
对触发器操做咱们通常在同一库中表用的表频繁,不一样的跨数据库操做就比较少,如今要实现跨服务器执行触发器操做,简直不感想象,仔细研究了一下,原来触发器跨服务器是能够的。
首先:在SQL中执行如下存储过程语句:
exec sp_addlinkedserver 'RemoteServer ', ' ', 'SQLOLEDB ', '192.168.18.23' ---建立服务器链接
exec sp_addlinkedsrvlogin 'RemoteServer ', 'false ',null, 'sa', '123456789' --建立登录
sp_dropserver 'RemoteServer ','droplogins'--删除服务器链接和登录
说明:执行系统存储过程 sp_addlinkedserver添加远程服务器,参数RemoteServer 是为远程服务器取的引用名,可随便写;'192.168.18.23' 为你要操做的远程服务器地址,执行系统存储过程 sp_addlinkedsrvlogin 添加远程服务器登陆身份验证,调用sp_dropserver可移除远程服务器注册信息。参数'RemoteServer 和'droplogins'也可只写一个。
其次:作好上一步准备以后还须要将服务中远程分布式服务启动,以实现SQL跨服务器操做,这是微软在实现远程服务器所必需的。右键点击“个人电脑”--“管理”--“服务和应用程序”--“服务”---启动“Distributed Transaction Coordinator”服务,启动分布式服务后还要打开远程服务器以及本地服务器135端口,由于远程分布式服务须要该端口通信。
1:打开“控制面板”--“管理工具”--“组件服务”
2:在“计算机”下右击“个人电脑”--“属性”--选择“MSDTC”选项卡
3:点击“安全性配置”按钮,
4:网络DTC访问勾选上,容许远程客户端,容许远程管理,容许入站,
容许出站,不要求身份验证勾选上。
注意:以上步骤须要两台服务器都要配置。
到此位置配置准备工做就能够完成了,下面就能够写一个触发器去执行操做远程服务器上的表了。这样本地服务器上的每个数据操做增删改都会及时同步到远程服务器数据库中。数据库