日期:2014-05-17  浏览次数:20574 次

关于增量备份
问题如下:
  从数据库A做全备份a1,还原到数据库B,这时需要修改B中相关记录,过段时间后再从A做增量备份a2,然后需要把a2增量还原到数据库B,这种情况sqlserver好像是不允许的,请问有没有高手知道怎么实现这种需求?

------解决方案--------------------
以前我是用bcp、dts
------解决方案--------------------
可以用存储过程来实现,比如说:
两个表里UsrDoc 和LocalUsrDoc,当增加,修改,或删除 UsrDoc里的内容的时候,LocalUsrDoc里的相应内容也会随之改变。
最后可以通过一个触发器调用这个存储过程
set ansi_nulls on
go
set ansi_warnings on
go 
  
CREATE PROCEDURE UsrDoc
AS
--同步更新数据
update L set TName=R.TName,Sex=R.Sex,PsnID=R.PsnID,Tel=R.Tel,Address=R.Address,TMem=R.TMem
from UsrDoc R,LocalUsrDoc L
where L.IDNo=R.IDNo
--同步新插入的数据
insert LocalUsrDoc(IDNo,TName,Sex,PsnID,Tel,Address,TMem) 
select IDNo,TName,Sex,PsnID,Tel,Address,TMem from UsrDoc R 
where not exists(select * from LocalUsrDoc where LocalUsrDoc.IDNo=R.IDNo)
--同步删除数据
delete from LocalUsrDoc
where not exists(
select * from UsrDoc R where LocalUsrDoc.IDNo=R.IDNo)
go
------解决方案--------------------
楼主可以考虑使用数据库复制,最简单的单向复制即可。

数据库A自动复制到数据库B,然后你也可以在数据库B上做其他操作。

数据库复制在比较忙的系统上不推荐,系统开销大。

感觉你的应用的构架不是很好,为什么要在数据库B上做另外的修改?能否移动到数据库A上完成?

实在要在B上修改,也应该将这些修改隔离出来,比如用另外的表,或在相同的表中有特定的标志等。这对于数据维护很有用处。