现在分别有两个数据库在两台服务器上,比如说是1 和 2 服务器。
现在要对1服务器里数据库的某个表进行操作(增删改)的时候,2服务器对应的数据库的这个表也要做出及时的更新(增删改)。
这样的触发器如何写?
------解决方案--------------------
试下开启跨服务器连接,然后使用[服务器名].[数据库名].[架构名].[表名].[列名]这样来实现跨服务器访问。
------解决方案--------------------
-- Step 1 :创建链接服务器、及其登录授权(在本地1服务器某数据库test执行)
--创建链接服务器
-- 示例代码:
exec sp_addlinkedserver 'datebasename ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'datebasename ', 'false ',null, '用户名 ', '密码 '
-- step 2:创建触发器tri_1_2
CREATE TRIGGER tri_1_2
ON [dbo].[test]
FOR INSERT
AS
BEGIN
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);
END
GO
------解决方案--------------------
要打开SET XACT_ABORT ON 另外,查询/更新都是用链接服务器名.数据库名.dbo.表名称这样操作.
------解决方案--------------------
你说的这个为什么不用订阅和发布功能呢