每当我尝试使用BACKUP和RESTORE命令创建数据库副本时,都会创建副本,但不包含任何数据。我正在运行以下命令,并获得成功状态:
BACKUP DATABASE [SomeDB]
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\SomeDB.bak'
BACKUP DATABASE successfully processed 161 pages in 0.021 seconds (62.805 MB/sec).
RESTORE DATABASE [SomeDB_Copy]
FROM DISK=N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\SomeDB.bak'
WITH MOVE N'SomeDB' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\SomeDB_copy.mdf',
MOVE N'SomeDB_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\SomeDB_copy.ldf'
RESTORE DATABASE successfully processed 162 pages in 0.095 seconds (13.958 MB/sec).
我错过了一步吗?我发现的所有例子都使用这种方法。 Even on StackOverflow。这是在SQL Server 2005上。
更新:.我将数据库备份到一个新文件,并使用它恢复,一切正常。我不知道我的原始文件是否已损坏,或者其他奇怪的事情发生了。
答案 0 :(得分:1)
我意识到这个话题已经过时但我想扩展一下usr在他关于多文件备份集的评论中所说的内容,尽管我称之为多备份设备。您的备份命令处理161页但还原处理162页这一事实让我觉得您的设备/文件中有多个备份。您可以在backup命令中使用INIT子句来保证设备中只有一个备份:
BACKUP DATABASE [SomeDB]
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\SomeDB.bak'
with init;
来自http://msdn.microsoft.com/en-us/library/ms186865.aspx的Microsoft文档:
磁盘设备在a中指定之前不一定存在 BACKUP声明。如果物理设备存在且INIT选项是 在BACKUP语句中未指定,备份将附加到 设备
您应该能够使用RESTORE命令上的HEADERONLY选项来检查设备/文件中是否有多个备份。
BACKUP DATABASE [SomeDB]
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\SomeDB.bak'
with init;
RESTORE HEADERONLY
FROM DISK = = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\SomeDB.bak';
BACKUP DATABASE [SomeDB]
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\SomeDB.bak';
RESTORE HEADERONLY
FROM DISK = = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\SomeDB.bak';
第一个RESTORE HEADERONLY的输出将在文件中显示一个备份,而第二个的输出应显示文件中有两个备份。