当前位置: 代码迷 >> Sql Server >> 跨服务器的触发器,该如何处理
  详细解决方案

跨服务器的触发器,该如何处理

热度:93   发布时间:2016-04-25 01:20:30.0
跨服务器的触发器
现在分别有两个数据库在两台服务器上,比如说是1 和 2 服务器。
现在要对1服务器里数据库的某个表进行操作(增删改)的时候,2服务器对应的数据库的这个表也要做出及时的更新(增删改)。

这样的触发器如何写?

------解决方案--------------------
试下开启跨服务器连接,然后使用[服务器名].[数据库名].[架构名].[表名].[列名]这样来实现跨服务器访问。
------解决方案--------------------
SQL code
-- Step 1 :创建链接服务器、及其登录授权(在本地1服务器某数据库test执行)--创建链接服务器 -- 示例代码: exec sp_addlinkedserver   'datebasename ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '  exec sp_addlinkedsrvlogin  'datebasename ', 'false ',null, '用户名 ', '密码 '-- step 2:创建触发器tri_1_2CREATE TRIGGER tri_1_2 ON [dbo].[test]FOR INSERTASBEGIN  SET NOCOUNT ON  SET XACT_ABORT ON   DECLARE @id INT, @name VARCHAR(20);IF EXISTS(SELECT COUNT(*) FROM INSERTED WHERE                        NOT EXISTS(SEKECT * FROM test))>0  BEGIN       SELECT @id=id,@name=name from INSERTED  WHERE                        NOT EXISTS(SEKECT id,name FROM test)      INSERT INTO srvname.dbname.dbo.test2(id,name) VALUES(@id,@name);ENDGO
------解决方案--------------------
要打开SET XACT_ABORT ON 另外,查询/更新都是用链接服务器名.数据库名.dbo.表名称这样操作.

------解决方案--------------------
你说的这个为什么不用订阅和发布功能呢
  相关解决方案