若对于同一数据库实例中的两个数据库进行同步则直接对数据库表创建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
关键词标签:数据库
相关阅读
热门文章 SqlServer2005对现有数据进行分区具体步骤sql server系统表损坏的解决方法MS-SQL2005服务器登录名、角色、数据库用户Access、SQL Server、Oracle常见应用的区别
人气排行 如何远程备份(还原)SQL2000数据库SQL2000数据库远程导入(导出)数据配置和注册ODBC数据源-odbc数据源配置教程SQL2000和SQL2005数据库服务端口查看或修改SQL Server 2005降级到2000的正确操作步骤修改Sql Server唯一约束教程浅谈JSP JDBC来连接SQL Server 2005的方法SQL Server创建表语句介绍
查看所有0条评论>>