[英]Restore multiple SQL Server .bak Files
我有一個包含多個.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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.