SQLCMD モードを使用すると、次のスクリプトを簡単に作成できます:
:setvar dbname YourDatabaseName :setvar dbfile N'E:\DATA\YourDatabase.mdf' :setvar logfile N'E:\TLOG\YourDatabase_log.ldf' USE [master] GO CREATE DATABASE $(dbname) ON ( FILENAME = $(dbfile) ), ( FILENAME = $(logfile) ) FOR ATTACH GOプレ>これは
sqlcmd.exeから動作します コマンドラインから (変数dbname, dbfile, logfileの値を指定することもできます) コマンド ラインからも)、またはTools > Options > Query Execution > by default, open new queries in SQLCMD modeを有効にすると、SQL Server Management Studio で動作します .SQLCMD ユーティリティとそのすべてのパラメーターについて詳しく読む MSDN で。
PS:もちろん、SQLCMD を有効にしたスクリプトを使用したこのアプローチは、BACKUP/RESTORE サイクルでも機能します :-) (Aaron が推奨)
PPS:適切な命名規則があり、データ ファイルが常に
$(dbname).mdfである場合 ログファイルは常に$(dbname)_log.ldfです 、この短縮された SQLCMD スクリプトを使用することもできます::setvar dbname YourDatabaseName USE [master] GO CREATE DATABASE $(dbname) ON ( FILENAME = N'E:\DATA\$(dbfile).mdf' ), ( FILENAME = N'E:\TLOG\$(logfile)_log.ldf' ) FOR ATTACH GOプレ>次に、コマンドラインからこれを呼び出します:
C:\> sqlcmd.exe -S yourserver -E -i attach.sql -v dbname=YourDb1プレ>など、データベースごとに 1 回、再接続する必要があります。
PPPS:バックアップを復元したい場合は、もう少し複雑です:
:setvar dbname YourDatabaseName USE [master] GO RESTORE DATABASE $(dbname) FROM DISK = N'E:\Backup\$(dbname).bak' WITH FILE = 1, MOVE N'$(dbname)' TO N'E:\DATA\$(dbname).mdf', MOVE N'$(dbname)_Log' TO N'E:\TLOG\$(dbname)_Log.ldf', NOUNLOAD, REPLACE GOプレ>
.bakという名前を付けている限り、これは機能します データベース名と同じファイルを作成し、それらを固定の場所に配置します (E:\Backupと仮定しました)。 ここ - 必要に応じて調整してください)。