首页 > 解决方案 > 使用多个 BAK 文件恢复 SQL Server 数据库的脚本

问题描述

我正在尝试编写一个脚本,以便在 SQL Server 2019 中使用每天位于一个文件夹中的多个 BAK 文件动态地执行“还原数据库”。

我将首先进行手动完整备份,此任务将安排在每天运行之后。

该计划是按顺序浏览每个 BAK 文件(位于同一文件夹中)(例如这里:04 --> 12)。

将有另一个 Python 脚本将清除旧文件,因此我只专注于使用位于此文件夹中的 BAK 文件执行恢复数据库。

最好的方法应该是什么?

我附上了一个包含所有 BAK 文件的屏幕截图。

在此处输入图像描述

我这里有一些 T-SQL 代码(我从其他线程复制的),但我不确定如何按顺序循环每个 BAK 文件。

而且我不确定是否必须处理此处列出的 mdf 和 ldf 文件。

RESTORE DATABASE [Test] FROM  DISK ='\\Folder\LOG...04.bak'
WITH
--what ever options... but likely a file move
MOVE 'data_file_1' TO 'E:\somefolder\data.mdf',
MOVE 'db_log' TO 'E:\somefolder\log.ldf',
REPLACE, --overwrites the database
RECOVERY --sets the DB to READ/WRITE. Use NORECOVERY if you need to restore 
logs / differentials
GO

RESTORE LOG Test
   FROM '\\Folder\Log...04.bak' --assuming this is a log
   WITH FILE = 1,  --this is the first log
   WITH NORECOVERY;  --keep in norecovery to restore other logs...
GO

标签: sql-serverpowershelltsqldatabase-restore

解决方案


推荐阅读