2

現在、CMS の基本インストールがあります。この CMS には、ユーザー、製品、コンテンツなどの完全な作業データセットが含まれています。現在、SQL Server 2012 に移動して、新しい DB を作成し、既存の基本インストール データベースから DB を復元します。

これには、インストールごとに最大 10 ~ 15 分かかる場合があります。

また、基本データベースに、構築するサイトのすべての要件が含まれていることを確認します。

私たちの課題は、次のことをしたいということです。

  1. スクリプトに新しい空のデータベースを作成させる
  2. このデータベースのクローンを新しい .bak ファイルに作成します
  3. この .bak ファイルを取得して、これを独自の MDF ファイルと LDF ファイルをそれぞれ含む新しいデータベースに複製します。

データベースは同じサーバー上にあるため、これを他のマシンまたはインスタンスに移行する必要はありません。

私たちのコードは以下です

CREATE database my_test

BACKUP DATABASE test_db TO DISK = 'C:\my_test\my_test.bak' WITH INIT;
EXEC internal_lab_test.dbo.sp_helpfile;

RESTORE FILELISTONLY
  FROM DISK = 'C:\my_test\my_test.bak'

RESTORE DATABASE my_test
  FROM DISK = 'C:\my_test\my_test.bak'
  WITH MOVE 'my_test' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_db.mdf',
  MOVE 'my_test_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_db_log.ldf'

すべてが新鮮でクリーンであるだけでなく、すべてのデータが含まれていることを確認したいのですが、このコードを実行するたびに、次のエラーメッセージが表示されます

また、元のデータベースの mdf ファイルと ldf ファイルがそのまま残り、新しいデータベースで使用されないようにすることも必要です。

Msg 3154, Level 16, State 4, Line 10
The backup set holds a backup of a database other than the existing 'my_test' database.
Msg 3013, Level 16, State 1, Line 10
RESTORE DATABASE is terminating abnormally.
4

2 に答える 2

4

これが古いことは知っていますが、完全を期すために、これはGoogleの2番目のエントリでした.

これは、データベースが既に存在するためです。そのため、データベースを削除するか、Replace で追加してください。

また、my_test および my_test_log の名前は、restore filelistonly コマンドからの論理名である必要があります。

RESTORE DATABASE my_test
  FROM DISK = 'C:\my_test\my_test.bak'
  WITH Replace,
  MOVE 'my_test' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_db.mdf',
  MOVE 'my_test_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_db_log.ldf'
于 2013-10-08T23:13:56.297 に答える