我有一个包含多个 .bak sql server 文件的文件夹。
我想将它们恢复到 sql server。我如何编写脚本以便可以立即恢复该文件夹中的所有备份文件。
我有一个包含多个 .bak sql server 文件的文件夹。
我想将它们恢复到 sql server。我如何编写脚本以便可以立即恢复该文件夹中的所有备份文件。
RESTORE DATABASE [db1] FROM DISK = N'C:\folder\db1.bak' WITH FILE = 1, MOVE N'DB_Data' TO N'C:\folder\db2.mdf', MOVE N'DB_log' TO N'C:\folder\db1.LDF', NOUNLOAD, STATS = 10
GO
RESTORE DATABASE [db2] FROM DISK = N'C:\folder\db2.bak' WITH FILE = 1, MOVE N'DB_Data' TO N'C:\folder\db2.mdf', MOVE N'DB_Log' TO N'C:\folder\db2.LDF', NOUNLOAD, STATS = 10
GO
尝试这样的事情。
我们来谈谈从多个 BAK 文件中恢复多个数据库。我认为 GAWK 可能会有所帮助。这不是 MS 方式,但可能是最快的方式。
你知道GAWK吗?
让您使用文件名构建输入文件:
dir *.bak > input.txt
将 GAWK 程序写入文件 program.gawk.txt:
BEGIN {
printf "-- My auto-generated script \n"
}
{
printf "RESTORE DATABASE [substr($1,1,length($1)-4)] FROM DISK = N'$1 \n'"
printf "GO \n\n"
}
END {
printf "-- End of script"
}
尝试使用 substr 根据 BAK 文件名为恢复的数据库生成临时名称。不确定 substr 表达式是否正确 - 请检查自己。
$1 将从 input.txt 更改为文件名
substr($1,1,length($1)-4) 用于从文件名中剪切“.BAK”
通过以下方式构建输出脚本:
gawk --file=program.gawk.txt input.txt > my_script.sql
..并审查它。
也许有可能做到这一点。不知道。
从以下网址下载 GAWK:http: //gnuwin32.sourceforge.net/packages/gawk.htm