--定时同步服务器上的数据--例子:--测试环境,SQLServer2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test--服务器上的表(查询分析器连接到服务器上创建)createtable[user](idintprimarykey,numbervarchar(4),namevarchar(10))go--以下在局域网(本机操作)--本机的表,state说明:null表示新增记录,1表示修改过的记录,0表示无变化的记录ifexists(select*=object_id(N'[user]')andOBJECTPROPERTY(id,N'IsUserTable')=1) droptable[user]GOcreatetable[user](idintidentity(1,1),numbervarchar(4),namevarchar(10),statebit)go--创建触发器,维护state字段的值createtriggert_stateon[user]afterupdateasupdate[user]setstate=1from[user]=--为了方便同步处理,创建链接服务器到要同步的服务器--这里的远程服务器名为:xz,用户名为:sa,无密码ifexists(select1frommaster..sysserverswheresrvname='srv_lnk') execsp_dropserver'srv_lnk','droplogins'goexecsp_addlinkedserver 'srv_lnk','','SQLOLEDB','xz'execsp_addlinkedsrvlogin'srv_lnk','false',null,'sa'go--创建同步处理的存储过程ifexists(select*=object_id(N'[dbo].[p_synchro]')andOBJECTPROPERTY(id,N'IsProcedure')=1) dropprocedure[dbo].[p_synchro]GOcreateprocp_synchroas--set XACT_ABORTon--启动远程服务器的MSDTC服务--execmaster..xp_cmdshell'isql/S"xz"/U"sa"/P""/q"execmaster..xp_cmdshell''netstartmsdtc'',no_output"',no_output--启动本机的MSDTC服务--execmaster..startmsdtc',no_output--进行分布事务处理,如果表用标识列做主键,用下面的方法--BEGINDISTRIBUTEDTRANSACTION --同步删除的数据 .[user] whereidnotin(selectidfrom[user]) --同步新增的数据 .[user] selectid,number,namefro
通过作业定时同步两个数据库 来自淘豆网m.daumloan.com转载请标明出处.