概述
有两个数据库(A、B)分别部署在不同的服务器上,在A数据库做触发器,添加一条数据会自动在B数据库添加一条数据。
触发器我们一般在同一个服务器的数据库中使用,不同的服务器之间操作就比较少,现在要实现跨服务器执行触发器操作。 开始从网上查了好多资料,发现都不能解决;
最让我感觉到有希望的是如下的方法,按照这个操作让我在A服务器看到了B服务器里边的数据,当我以为一切都完成了的时候,发现触发器根本执行不了。如下
(首先:在SQL中执行以下存储过程语句:
exec sp_addlinkedserver 'RemoteServer ', ' ', 'SQLOLEDB ', '112.28.18.23' ---创建服务器连接
exec sp_addlinkedsrvlogin 'RemoteServer ', 'false ',null, 'sa', '123456789' --创建登陆
sp_dropserver 'RemoteServer ','droplogins'--删除服务器连接和登陆
其次:做好上一步准备之后还需要将服务中远程分布式服务启动,以实现SQL跨服务器操作,这是微软在实现远程服务器所必需的。右键点击“我的电脑”--“管理”--“服务和应用程序”--“服务”---启动“Distributed Transaction Coordinator”服务,启动分布式服务后还要打开远程服务器以及本地服务器135端口,因为远程分布式服务需要该端口通讯。
1:打开“控制面板”--“管理工具”--“组件服务”
2:在“计算机”下右击“我的电脑”--“属性”--选择“MSDTC”选项卡
3:点击“安全性配置”按钮,
4:网络DTC访问勾选上,允许远程客户端,允许远程管理,允许入站,
允许出站,不要求身份验证勾选上。
注意:以上步骤需要两台服务器都要配置。
到此位置配置准备工作就可以完成了,下面就可以写一个触发器去执行操作远程服务器上的表了。这样本地服务器上的每一个数据操作增删改都会及时同步到远程服务器数据库中。)
最后还是以失败而告终,最后常识到很多之后,在一个博客下边看到了一个方法,如下:
SET @remark=(select [UC_REMARKS] FROM OPENDATASOURCE('SQLOLEDB','Data Source=119.09.11.123;User ID=sa;Password=123').[YunZhiSys].[dbo].[aaa]
WHERE ID=1 )
先在服务器A上登录一下服务器B,然后获取数据,插入按照这个方法写就行了。
最后
以上就是鳗鱼帅哥为你收集整理的如何跨服务器设置触发器?的全部内容,希望文章能够帮你解决如何跨服务器设置触发器?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复