搜索
首页 电脑/网络 软件 系统软件

如何利用触发器实现两个数据库间的同步?

如何利用触发器实现两个数据库间的同步?

全部回答

2018-04-05

51 0
    若对于同一数据库实例中的两个数据库进行同步则直接对数据库表创建Trigger。 SQL Server 2005的联机帮助: Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger) CREATE TRIGGER [ schema_name 。
     ]trigger_name ON { table | view } [ WITH [ ,。。。n ] ] { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS { sql_statement [ ; ] [ 。
    。。n ] | EXTERNAL NAME } ::= [ ENCRYPTION ] [ EXECUTE AS Clause ] ::= assembly_name。class_name。
  method_name 以下是一个例子 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Author: gsoosg -- Create date: 2007-12-24 -- Description: -- ============================================= CREATE TRIGGER [Trigger_Add_Carduser] ON [dbo]。
    [carduser] AFTER INSERT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements。
   SET NOCOUNT ON; set insert ParkFee。  dbo。card_user(card_user_id,card_user_name,sex) select card_user_id,card_user_name,sex from inserted END 说明: 上例实现了为当前数据库中表carduser创建触发器当插入数据时,同步向ParkFee数据库表dbo。
    card_user插入数据,从而达到同步插入。类同,可将insert语句改为update,delete。 注意: 若想利用此方法达到反向同步则可能出现问题,比如想在parkfee数据库有新数据插入时让当前数据库也同时插入一条记录,建立一个触发器,则形成了一个循环触发,当插入数据时会报大于最大递归次数错。
    因此因避免这样的触发循环,若要达到类似效果还须想别的方法。
    (待续) 补充: 若两个库处于不同的数据库服务器则应先进行以下操作: 在 server1 上创建连接服务器,以便在 server1 中操作 server2,实现同步 exec sp_addlinkedserver 'server2','','SQLOLEDB','server2的数据库实例名或ip' exec sp_addlinkedsrvlogin 'server2','false',null,'用户名','密码' go。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
系统软件
程序设计
电脑装机
操作系统/系统故障
硬件
笔记本电脑
百度
互联网
反病毒
软件
软件
系统软件
多媒体软件
办公软件
网络软件
图像处理软件
系统软件
系统软件
举报
举报原因(必选):
取消确定举报