梦见姐姐生了个男孩:如何通过触发器实现数据库局域网中即时同步

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 09:44:54
如何通过触发器实现数据库局域网中即时同步??
我从网上找的代码运行起来,可是有问题?代码如下:
-测试环境:SQL2000,远程主机名:xz,用户名:sa,密码:无,数据库名:testtest

--创建测试表,不能用标识列做主键,因为不能进行正常更新
--在本机上创建测试表,远程主机上也要做同样的建表操作,只是不写触发器
if exists (select * from dbo.sysobjects where id = object_id(N'[testtest]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [testtest]

create table testtest(id int not null constraint PK_testtest primary key
,name varchar(10))
go

--创建同步的触发器
create trigger t_testtest on testtest
for insert,update,delete
as
set XACT_ABORT on
--启动远程服务器的MSDTC服务
exec master..xp_cmdshell 'isql /S"CTISERVER" /U"sa" /P"" /q"exec master..xp_cmdshell ''net start msdtc'',no_output"',no_output

--启动本机的MSDTC服务
exec master..xp_cmdshell 'net start msdtc',no_output

--进行分布事务处理,如果表用标识列做主键,用下面的方法
BEGIN DISTRIBUTED TRANSACTION
delete from openrowset('sqloledb','CTISERVER';'sa';'',TZCTI.dbo.testtest)
where id in(select id from deleted)
insert into openrowset('sqloledb','CTISERVER';'sa';'',TZCTI.dbo.testtest)
select * from inserted
commit tran
go

--插入数据测试
insert into testtest
select 1,'aa'
union all select 2,'bb'
union all select 3,'c'
union all select 4,'dd'
union all select 5,'ab'
union all select 6,'bc'
union all select 7,'ddd'

可是到插入数据时,我的就报错!我的是7.0!
没人知道吗?