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

作者:罗丽娜 时间:2009-01-06 11:26:00 

若对于同一数据库实例中的两个数据库进行同步则直接对数据库表创建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

标签:
0
投稿

猜你喜欢

  • EXECUTE IMMEDIATE用法小结

    2009-09-26 18:32:00
  • aspjpeg 添加水印教程及生成缩略图教程

    2011-04-04 11:04:00
  • SQL语句的执行原理分析

    2012-01-29 18:17:36
  • ASP中使用SQL语句教程

    2008-09-03 12:17:00
  • 打造设计你自己的字体

    2007-12-12 13:16:00
  • 让ASP也支持动态include文件

    2008-05-08 13:00:00
  • 禁止在网页里面是用搜狗的云输入法

    2009-11-29 15:50:00
  • 一条sql 语句搞定数据库分页

    2009-03-21 18:32:00
  • Web标准下该如何“插入”图像

    2008-03-17 13:01:00
  • 由 IE8 User-Agent 更新想到的

    2009-01-12 18:33:00
  • MSSQL存储过程分页,ASP存储过程分页

    2009-09-11 12:50:00
  • jquery中文手册上的一点错误--说说p标签失去焦点

    2009-09-13 21:24:00
  • HTML邮件的又一点思考

    2009-05-06 13:33:00
  • 基于鼠标点击跟踪的用户点击行为分析

    2008-04-24 19:22:00
  • ASP 使用三层架构 asp中使用类

    2011-03-16 10:52:00
  • ASP 精华源码收集(五年总结)第1/20页

    2011-04-07 11:15:00
  • Web Forms 2.0

    2008-07-24 12:47:00
  • 1500个绚丽主题 谷歌中国个人风格首页发布

    2008-11-12 11:14:00
  • css中浮动思考与小结

    2008-10-30 11:57:00
  • asp获取数据库中表名和字段名的代码

    2011-04-18 11:02:00
  • asp之家 网络编程 m.aspxhome.com