USE master; GO ALTER DATABASE 你的库名 SET RECOVERY FULL; GO
BACKUP DATABASE 你的库名 TO DISK = 'D:\Backup\库名_Full_20260419.bak' WITH INIT, COMPRESSION; GO
这是后续所有日志还原的基础,没有它日志无法还原。
RESTORE DATABASE 你的同步库名 FROM DISK = 'D:\Backup\库名_Full_20260419.bak' WITH MOVE '逻辑数据文件名' TO 'D:\Data\同步库名.mdf', MOVE '逻辑日志文件名' TO 'D:\Log\同步库名.ldf', NORECOVERY; -- 关键!必须加这个 GO
执行后,目标库会显示:“正在还原...” (Restoring...)这是正常的,说明它准备好接收日志了。
以后在源库定期执行日志备份:
BACKUP LOG 你的库名 TO DISK = 'D:\Backup\Log\库名_Log_20260419_01.trn' WITH INIT, COMPRESSION; GO
可以每 5/10/15 分钟执行一次
文件名按时间递增,不要覆盖
把 .trn 日志文件拷贝到目标服务器,执行:
RESTORE LOG 你的同步库名 FROM DISK = 'D:\ReceiveLog\库名_Log_20260419_01.trn' WITH NORECOVERY; -- 继续保持还原状态 GO
每来一个日志,就还原一次,同步就实现了。
如果你希望目标库既能同步,又能偶尔查询,用:
RESTORE LOG 你的同步库名 FROM DISK = 'xxx.trn' WITH STANDBY = 'D:\Standby\UNDO.dat';
效果:
SQL Server 2014 自带日志传送,可以全自动:
全程界面化,不用写脚本。
本文为宁若水!原创文章,转载无需和我联系,但请注明来自[若水]博客 www.lalaya.net
