我备份了一个数据库:

BACKUP DATABASE MyDatabase
TO DISK = 'MyDatabase.bak'
WITH INIT --overwrite existing

然后试图恢复它:

RESTORE DATABASE MyDatabase
   FROM DISK = 'MyDatabase.bak'
   WITH REPLACE --force restore over specified database

现在数据库处于还原状态。

有些人推测,这是因为备份中没有日志文件,需要使用以下方法前滚:

RESTORE DATABASE MyDatabase
WITH RECOVERY 

当然,这是行不通的:

Msg 4333, Level 16, State 1, Line 1
The database cannot be recovered because the log was not restored.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

在灾难性的情况下,你想要的是一个无法工作的恢复。


备份包含数据文件和日志文件:

RESTORE FILELISTONLY 
FROM DISK = 'MyDatabase.bak'

Logical Name    PhysicalName
=============   ===============
MyDatabase    C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase.mdf
MyDatabase_log  C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase_log.LDF

当前回答

先检查并运行SQL代理服务。 使用以下T-SQL: 选择文件名 从master.sys.sysaltfiles WHERE dbid = DB_ID('db_name'); 连续使用T-SQL: 从磁盘恢复数据库= 'DB_path' 与 重启,取代;

希望这对你有所帮助!

其他回答

在我的情况下,我只是右键单击数据库,然后任务—>恢复—>数据库—>Ok,一切都变得很好。

您需要使用WITH RECOVERY选项和数据库RESTORE命令使数据库在线,作为恢复过程的一部分。

当然,这仅适用于不打算恢复任何事务日志备份的情况,即只希望恢复数据库备份,然后能够访问数据库。

你的命令应该是这样的,

RESTORE DATABASE MyDatabase
   FROM DISK = 'MyDatabase.bak'
   WITH REPLACE,RECOVERY

使用SQL Server Management Studio中的恢复数据库向导可能会更成功。通过这种方式,您可以选择特定的文件位置、覆盖选项和WITH恢复选项。

你试过运行验证吗?确保这是声音备份。

http://msdn.microsoft.com/en-us/library/ms188902.aspx

所有基于WITH RECOVERY的选项都不适合我。

所做的是做完整的恢复从管理工作室。

USE [master]
RESTORE DATABASE Sales_SSD
FROM  DISK = N'D:\databaseBackups02\Daily_Sales_20150309_0941.bak' 
WITH  FILE = 1,  
MOVE N'Sales_Data' TO N'C:\Data\SSD\Sales.mdf',  
MOVE N'Sales_Log' TO N'C:\Data\SSD\Sales_1.ldf',  
NOUNLOAD,  REPLACE,  STATS = 5

我今天在虚拟机SQL Server上遇到了这个问题。我试图恢复一个1.8GB的数据库,它被ASYNC_IO_COMPLETION卡在0%。

我尝试了多次,将.bak文件移动到我要恢复到的驱动器;甚至试图恢复另一个大小<400MB的不相关数据库。

我在这个帖子上尝试了所有的方法,都没有成功。

然后我遇到了恢复卡在DBA的ASYNC_IO_COMPLETION和答案为我工作。

启用“立即文件初始化”并重新启动SQL Server,然后重试恢复。SSMS GUI几乎立即显示进度百分比,如下所示:

Select percent_complete,* From sys.dm_exec_requests

我的猜测是VM后面的存储非常慢,或者有故障。