编写这篇随笔的缘由是最近sql中有一个数据同步的需求,也就是说两个不同服务器上面的数据库,源数据库中的数据更新后,目标数据库中的数据也需要在一定时间内同步更新,方便程序调用、实现实时更新。
源数据库服务器(***.***.***.***)上面的数据表结构如图所示:
当然,目标数据库服务器上面的表结构需要与源数据库表结构相同。开始之前我们需要在服务器上面检查是否存在或新建一个"链接服务器","链接服务器"用于两台DB Server间的通信,可以在如图所示的位置查看或新建它:
接下来,我们需要在目标数据库服务器上面新建作业,详细步骤如下所示:
1.新建执行数据同步的存储过程
示例代码如下所示:
-- Author: zhuzx
-- Create date: 2010-12-21
-- Description: 同步行情数据
-- =============================================
create PROCEDURE [ dbo ] . [ vinnervideo_datasyn ]
AS
declare @temp1 int
declare @temp2 int
BEGIN
select top 1 @temp1 = OID from [ 122.11.***.*** ] . [ winnervideo ] .dbo.video where IsDelete = 0 and IsAuditing = 1 order by OID desc
select top 1 @temp2 = OID from video where IsDelete = 0 and IsAuditing = 1 order by OID desc
if ( @temp1 > @temp2 )
begin
insert video (IsDelete,LinkUrl,IsPost,RelativeUrl)
select IsDelete,LinkUrl,IsPost,RelativeUrl from [ 122.11.***.*** ] . [ winnervideo ] .dbo.video where oid > @temp2
end
END
2.新建作业
新建之后会一个弹出窗体出现,里面也还是有一些小细节问题是需要注意的。
a.常规,需要注意的地方有:名称和启用状态
b.步骤。需要注意到的地方有步骤名称,命令行(第一步新建的sql存储过程)
c.计划。需要注意到的地方主要有:计划类型(sql存储过程执行的频率、执行间隔)可以按照自己的业务需求进行设定
执行完这些操作后,基本的工作已经完成了。最后检查一下自己新建的作业是否已经启动,即是否开始了作业。之后,在指定的时间间隔内目标数据库中的数据就会得到更新了,如果数据的访问量比较大,将数据库中的数据分发到其他数据库中也有利用缓解数据访问压力。好了,先总结到这里吧!