1
backup database Clinical_Data_Extension to disk='c:\Clinical_Data_Extension_full.bak'
restore filelistonly from disk='c:\Clinical_Data_Extension_full.bak'
restore database Clinical_Data from disk='c:\Clinical_Data_Extension_full.bak'
with move 'Clinical_Data_Extension' to 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Clinical_Data.mdf',
move 'Clinical_Data_Extension_log' to 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Clinical_Data.ldf',
REPLACE

エラー:

Msg 3234, Level 16, State 2, Line 3
Logical file 'Clinical_Data_Extension' is not part of database 'Clinical_Data'. Use RESTORE FILELISTONLY to list the logical file names.
Msg 3013, Level 16, State 1, Line 3
RESTORE DATABASE is terminating abnormally.

それでも、何らかの理由で、次の同一のコードは正常に機能します。

backup database Clinical_Data to disk='c:\Clinical_Data_full.bak'
restore filelistonly from disk='c:\Clinical_Data_full.bak'
restore database Clinical_Data_Extension from disk='c:\Clinical_Data_full.bak'
with move 'Clinical_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Clinical_Data_Extension.mdf',
move 'Clinical_Data_log' to 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Clinical_Data_Extension.ldf',
REPLACE

基本的には、データベース「Clinical_Data_Extension」を作成して作業を行っています。完了したら、「Clinical_Data」を削除するスクリプトを作成し、最初に説明したスクリプトを使用して、「Clinical_Data_Extension」からのデータを使用して「Clinical_Data」を復元し、本質的に「Clinical_Data」を上書きします。ただし、何らかの理由で最初のスクリプトでエラーが発生し、2 番目のスクリプトではまだ完全に同一ではありません。なぜこれが起こると思いますか?

4

1 に答える 1

1

いいえ、2 番目のコードは同一ではありません。後

move

それは言う

'Clinical_Data'

いいえ

'Clinical_Data_Extension'

.それは非常に重要です。これは、バックアップ内のデータ コンテナーの論理名です。

USE master
GO
RESTORE FILELISTONLY
   FROM disk='c:\Clinical_Data_Extension_full.bak'

正確な論理名を提供します。論理名とデータベース名は、同じ規則である必要はありません。「Clinical_Data_Extension_full.bak」のデータ コンテナーの論理名は、他のバックアップと同様に「Clinical_Data」である可能性があります。このエラーは、指定した論理名が「c:\Clinical_Data_Extension_full.bak」に存在しないことを示しています。

ログ コンテナーでも同じ混乱が発生する可能性があります。

于 2013-09-11T17:33:24.150 に答える