2

クリーンなデータベース テンプレートのバックアップを作成し、別の名前で新しいデータベースを生成する必要がありますが、コンテンツはバックアップされています。バックアップ スクリプトは次のとおりです。

sqlcmd -S %DB_HOST% -Q "BACKUP DATABASE %DB_NAME% TO DISK = '%BACKUP_FILE%'"

復元スクリプトは次のとおりです。

sqlcmd -S %DB_HOST% -Q "RESTORE DATABASE %DB_NAME% FROM DISK = '%BACKUP_FILE%' WITH REPLACE"

そして、同じデータベース名で動作します。ただし、DB「ORIGINAL_DB_NAME」をバックアップしてから「NEW_DB_NAME」に復元すると、例外が発生します。

Msg 1834, Level 16, State 1, Server <HOST>, Line 1
The file '.....\MSSQL\Data\ORIGINAL_DB_NAME.mdf' cannot be overwritten.  It is being used by database 'ORIGINAL_DB_NAME'.
....
4

3 に答える 3

3

データ/ログ ファイルの新しい場所を指定する必要があります。

この MSDN の記事、例 Dを参照してください。

RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks2012_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks2012_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';
RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   WITH RECOVERY;
于 2013-04-26T12:53:45.730 に答える