SQLServerの複数の.bakファイルを含むフォルダーがあります。
それらをSQLサーバーに復元したいと思います。そのフォルダからバックアップされたすべてのファイルを一度に復元できるようにスクリプトを実行するにはどうすればよいですか。
SQLServerの複数の.bakファイルを含むフォルダーがあります。
それらをSQLサーバーに復元したいと思います。そのフォルダからバックアップされたすべてのファイルを一度に復元できるようにスクリプトを実行するにはどうすればよいですか。
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
..そしてそれを確認します。
たぶん、このPowerShellの方法を実行することは可能です。わからない。
GAWKをhttp://gnuwin32.sourceforge.net/packages/gawk.htmからダウンロードします。