我正在为我的生产网站使用SQL Server 2008 R2 Standard(版本10.50.1600.1) 带有高级服务的SQL Server Express版本(v10.50.1600.1),用于本地主机作为数据库。
几天后我的SQL Server崩溃了,我不得不在我的localhost上安装一个新的2008 R2 Express版本。当我恢复从Express版本获取的一些旧版本时,它工作正常,但是当我尝试从生产服务器中取出的.bak
文件恢复数据库时,它会导致以下错误:
错误:指定的演员表无效。 (SqlManagerUI)
当我尝试使用命令
恢复数据库时Use Master
Go
RESTORE DATABASE Publications
FROM DISK = 'C:\Publications.bak'
WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
MOVE 'AlPublications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
它会产生不同的错误
Msg 3154,Level 16,State 4,Line 1
备份集包含除现有“出版物”数据库之外的数据库的备份 消息3013,级别16,状态1,行1 RESTORE DATABASE异常终止。
我已经交叉检查了版本。它们似乎都与我相匹配,如下图所示
以前我能够将数据库从标准版恢复到快速版,但现在它失败了。我删除了数据库并尝试重新创建它。那也失败了。
我不确定我做错了什么。我很感激有关这方面的帮助
问题已解决,因为.bak文件似乎已损坏。当我用不同的文件尝试它时,它起作用了。
答案 0 :(得分:161)
可能是因为将SQL Server 2012版本备份文件还原到SQL Server 2008 R2甚至更少。
答案 1 :(得分:39)
GUI有时会变幻无常。使用T-SQL时出现的错误是因为您尝试覆盖现有数据库,但未指定覆盖/替换现有数据库。以下可能有效:
Use Master
Go
RESTORE DATABASE Publications
FROM DISK = 'C:\Publications_backup_2012_10_15_010004_5648316.bak'
WITH
MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
MOVE 'Publications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
, REPLACE -- Add REPLACE to specify the existing database which should be overwritten.
答案 2 :(得分:15)
最后得到了这个错误,以便在恢复时消失。我沮丧地转移到SQL2012,但我想这可能仍然适用于2008R2。我不得不使用逻辑名称:
RESTORE FILELISTONLY
FROM DISK = ‘location of your.bak file’
从那里我使用逻辑名称MOVE
运行了一个恢复语句。
RESTORE DATABASE database1
FROM DISK = '\\database path\database.bak'
WITH
MOVE 'File_Data' TO 'E:\location\database.mdf',
MOVE 'File_DOCS' TO 'E:\location\database_1.ndf',
MOVE 'file' TO 'E:\location\database_2.ndf',
MOVE 'file' TO 'E:\location\database_3.ndf',
MOVE 'file_Log' TO 'E:\location\database.ldf'
当它恢复时,我几乎快乐地哭泣。
祝你好运!答案 3 :(得分:3)
以下可能是导致此问题的两个原因:
在SQL 2012上进行的备份和Restore Headeronly是在SQL 2008 R2中完成的
备份媒体已损坏。
如果运行以下命令,则始终可以发现实际错误:
restore headeronly
from disk = 'C:\Users\Public\Database.bak'
在“
”中提供数据库文件的完整位置希望有帮助