我有一个包含sql server的多个.bak文件的文件夹。
我想将它们还原到sql server。如何执行脚本以便可以立即恢复该文件夹中的所有备份文件。
答案 0 :(得分:1)
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
尝试这样的事情。
答案 1 :(得分:0)
让我们谈谈从多个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,长度($ 1)-4)用于从文件名中剪切“.BAK”
按以下方式构建输出脚本:
gawk --file=program.gawk.txt input.txt > my_script.sql
..并进行审核。
也许有可能做这个powershell方式。不知道。
下载GAWK