快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

备份(同步)远程数据库某表。[问题点数:100分,结帖人keagan]

请联系QQ:1793040 索取软件

–下面是按楼主的情况的同步实例:

–定时同步服务器上的数据(服务器上的数据修改同步到本地)

–例子:
–测试环境,SQLServer2000,远程服务器名:rserver,用户名为:ruser,密码:rpwd,
测试数据库:test

–服务器上的表(查询分析器连接到服务器上创建)
–state字段为辅助更新而设置的附加字段,字段值说明:null表示新增记录,1表示修改过的记录,0表示无变化的记录
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[luser]’)andOBJECTPROPERTY(id,N’IsUserTable’)=1)
droptable[luser]
GO
createtable[luser](idintidentity(1,1)primarykey,[user]varchar(4),pwdvarchar(10),addressvarchar(50),statebit)
go

–创建触发器,维护state字段的值
createtriggert_stateon[luser]
afterupdate
as
update[luser]setstate=1
from[luser]ajoininsertedbona.id=b.id
wherea.stateisnotnull
go

—-以下在局域网(本机操作)
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[luser]’)andOBJECTPROPERTY(id,N’IsUserTable’)=1)
droptable[luser]
createtable[luser](idintprimarykey,[user]varchar(4),pwdvarchar(10),addressvarchar(50))
go

–为了方便同步处理,创建链接服务器到要同步的服务器
–这里的远程服务器名:rserver,用户名为:ruser,密码:rpwd
ifexists(select1frommaster..sysserverswheresrvname=’srv_lnk’)
execsp_dropserver’srv_lnk’,’droplogins’
go
execsp_addlinkedserver’srv_lnk’,”,’SQLOLEDB’,’rserver’
execsp_addlinkedsrvlogin’srv_lnk’,’false’,null,’ruser’,’rpwd’
go

–创建同步处理的存储过程
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[p_synchro]’)andOBJECTPROPERTY(id,N’IsProcedure’)=1)
dropprocedure[dbo].[p_synchro]
GO
createprocp_synchro
as

–同步删除的数据
deletefrom[luser]
whereidnotin(selectidfromsrv_lnk.test.dbo.[luser])

–同步新增的数据
insertinto[luser]
selectid,[user],pwd,addressfromsrv_lnk.test.dbo.[luser]
wherestateisnull

–同步修改的数据
update[luser]set
[user]=b.[user],pwd=b.pwd,address=b.address
from[luser]a
joinsrv_lnk.test.dbo.[user]bona.id=b.id
whereb.state=1

–同步后更新服务器上的标志
updatesrv_lnk.test.dbo.[luser]setstate=0whereisnull(state,1)=1
–COMMITTRAN –如果启用分布式事务处理,加上此句
go

–创建作业,定时执行数据同步的存储过程
ifexists(SELECT1frommsdb..sysjobswherename=’数据处理’)
EXECUTEmsdb.dbo.sp_delete_job@job_name=’数据处理’
execmsdb..sp_add_job@job_name=’数据处理’

–创建作业步骤
declare@sqlvarchar(800),@dbnamevarchar(250)
select@sql=’execp_synchro’ –数据处理的命令
,@dbname=db_name() –执行数据处理的数据库名

execmsdb..sp_add_jobstep@job_name=’数据处理’,
@step_name=’数据同步’,
@subsystem=’TSQL’,
@database_name=@dbname,
@command=@sql,
@retry_attempts=5, –重试次数
@retry_interval=5 –重试间隔

–创建调度,第小时执行一次
EXECmsdb..sp_add_jobschedule@job_name=’数据处理’,
@name=’时间安排’,
@freq_type=4, –4每天,8每周,16每月
@freq_interval=1, –作业执行的天数
@freq_subday_type=0x8, –是否重复执行,0x1在指定的时间,0x4分钟,0x8小时
@freq_subday_interval=1, –重复周期
@freq_recurrence_factor=1, –重复执行,则设置为1,否则设置为0
@active_start_time=00000 –0点开始执行

go

备份(同步)远程数据库某表。[问题点数:100分,结帖人keagan]

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1793040