恢复bak类型的数据库是,一直处于’正在执行(0%)'状态.
经网上搜索后,查出原因.
后用以下代码解决

USE master   
RESTORE FILELISTONLY   
FROM DISK = 'F:\QQGroup.bak'   
Go 
RESTORE DATABASE quntest   
FROM DISK = 'F:\QQGroup.bak'   
WITH MOVE 'QQQun' TO 'G:\data\quntest.mdf',   
MOVE 'QQQun_log' TO 'G:\data\quntest_log.ldf',   
STATS = 10, REPLACE   
GO  

大致步骤:先创建一个数据库,并为该数据库指定一个文件夹.如我在G盘下的data文件夹.
创建后,会在该文件夹下自动生成’mdf’和’ldf’格式的文件.
通过 命令查询其bak文件的’mdf’和’ldf’文件名,格式如下:

USE master   
RESTORE FILELISTONLY   
FROM DISK = '要还原的bak文件.bak'   
Go 

再然后以如下这种格式进行还原:

RESTORE DATABASE 数据库名   
FROM DISK = '要还原的bak文件的绝对路径'   
WITH MOVE '其bak文件的mdf文件名' TO '数据库的mdf文件的绝对路径',   
MOVE '其bak文件的ldf文件名' TO '数据库的ldf文件的绝对路径',   
STATS = 10, REPLACE   
GO  

其原理是将bak文件中,mdf和ldf文件的数据,复制给数据库的mdf文件和ldf文件.以此来达到还原bak格式的数据库之目的.
主要参考该文章:https://www.iteye/blog/1017401036-2404800

更多推荐

SQL SERVER 2008R2恢复大数据库文件时一直处于'正在执行(0%)'的问题