- SQL code
两台数据库服务器之间的数据进行相互同步,初步设想是这样的,大家都不妨拿出自己的意见。一起讨论讨论。。前提:服务器:A , B 表:t_p,t_p 主键:id , id另外t_p都有7、8个子表。所以在同步主表数据的同时,还要同步子表数据两表结构完全一样。两表数据都是百万级,每天以4W的速度递增。。。 方案:1、建立一个同步表S_p(id,statu),statu说明:1表示需要同步,0表示不需要同步,也就是已经同步过了。2、在t_p表上建立触发器,当t_p表发生insert、update操作时,将发生变更的数据的id存入同步表中,并设置其statu为1,3、创建同步存储过程,CREATE PROCEDURE Up_Syn_DataASBEGIN --定义表变量用来存储从S_p中取出来的id,这里定义表变量的目的主要是为了保持子表数据的同步,因为子表也有触发器,也有对应的同步表,为了防止同步时子表数据比主表多,所以将主表id存入表变量中。 declare @idS table(Id uniqueidentifier) --将同步表中需要同步的id存入表变量中, insert into @idS select id from S_P where Status!=0 begin tran --更改同步表中对应id的状态 update S_P set Statu=0 from S_P a,@idS b where a.Id=b.Id ------------更新T_P表数据------------- --更改T_P_Order表状态,使触发器对下面所同步数据不处理 exec Up_UpdateStatus 'T_P','1' --通过链接服务器往对应的T_P表中插入数据 insert into HJZX_SYN.HJZX2.dbo.T_P select b.* from @idS a left join T_P b on a.Id=b.Id --该表同步完成 exec Up_UpdateStatus 'T_P','0' -------------------------------------------- ------------更新子表T_P_Insure表数据------------- exec Up_UpdateStatus 'T_P_Insure','1' --这个存储过程是为了标志该表插入数据,不需要触发。 --通过链接服务器往对应的T_P_Insure表中插入数据 insert into HJZX_SYN.HJZX2.dbo.T_P_Insure select b.* from @idS a left join T_P_Insure b on a.Id=b.Id --该表同步完成 exec Up_UpdateStatus 'T_P_Insure','0' -------------------------------------------- 下面子表同步操作一样,另外事务提交回滚等就不写了。 end4、创建每小时执行的作业,调用存储过程。。
------解决方案--------------------
sf,jf
------解决方案--------------------
费那劲干嘛,整成事务复制不就完了?
------解决方案--------------------
你是使用存储过程同步?
2000?
为啥不用自带的同步复制功能啦?
------解决方案--------------------
关注!
------解决方案--------------------
好像坛子里面很多吧,
帖几个给你~
如何实现两个数据库的同步?
http://topic.csdn.net/u/20080523/11/08e4624a-13d1-4a6c-a9bc-7cfdd721a351.html
如何实现两个数据库中某个表同步(两台服务器)
http://topic.csdn.net/u/20080618/10/4c893d16-47fa-468c-9c39-0f316546d0ac.html
SQL SERVER 2005 同步复制技术
http://topic.csdn.net/u/20080520/22/f2fc0428-6461-482e-8619-0af97bf83029.html
不同服务器数据库表同步
http://topic.csdn.net/u/20080327/10/0d810f44-55d7-47fa-ba21-eed954e1c950.html
数据库同步更新的问题(急)
http://topic.csdn.net/u/20080428/17/e91b5931-04a8-4435-94bb-380c7f819a3e.html
两数据库同步--------急!!!!!!!!
http://topic.csdn.net/u/20080416/14/19546216-cb3e-4963-ac4f-ae5ed8a32434.html
------解决方案--------------------
------解决方案--------------------
接分~~~
雙向的沒玩過
------解决方案--------------------
SQL Server 2000订阅与发布的具体操作
同步过程
一、准备工作,如果完成则可跳过。
1、内网DB服务器作为发布服务器,外网DB服务器作为订阅服务器。
发布服务器和订阅服务器上分别创建Windows用户jl,密码jl,隶属于administrators,注意要保持一致。
2、发布服务器上创建一个共享目录,作为发布快照文件的存放目录。例如:在D盘根目录下建文件夹名为SqlCopy,设置用户jl,权限为完全控制。
3、确定发布服务器和订阅服务器的数据库autoweb保持一致。
4、在发布服务器和订阅服务器的SQL Server中创建用户登陆名jl,作为发布数据库autoweb的拥有者(设置为dbo_owner和public)。用户名和密码都一致。
5、打开服务(控制面板---管理工具---服务)
---右击SQLSERVER AGENT---属性---登录---选择“此帐户”
---输入或选择第一步中创建的WINDOWS 用户jl,
---“密码“中输入该用户密码jl
6、开启SQL Server 2005的网络协议TCP/IP和管道命名协议并重启网络服务。
7、设置SQL SERVER 身份验证,解决连接时的权限问题(发布、订阅服务器均设置)
步骤为:对象资源管理器----右击SQL实例-----属性----安全性----服务器身份验证------选“SQL Server和WINDOWS“,然后点确定。