最近本人也就遇到了这样的事情。星期一一上班,老板把我叫到办公室,给了我一张光盘,然后告诉我里面是一个MSSQL的数据库备份文件,让我给还原一下,最后还特别嘱咐我,这个数据文件特别重要,让我想尽办法一定要还原。我将光盘中的数据拷贝到硬盘,然后按照常规的数据还原步骤进行还原。在还原的最后一个步骤出现一个错误提示(如图1)。

说明:该数据库备份文件是以bak为后缀名的,而我平时对MSSQL数据库进行备份,其数据库备份文件是没有后缀名的,也就是一个备份时所设定的文件名。由于老板给我的就是一个数据库备份文件,没有相关的说明信息,因此采取的步骤为:

(1)新建一个数据库,其名称跟所给的文件名称相同。

(2)单击“开始”→“程序”→“Microsoft SQL Server”→“企业管理器”,打开本地数据库,在其中新建“TRACKIT60”数据库。

(3)选中“TRACKIT60”数据库并右键单击,然后菜单中选择“还原数据库”命令进行还原。

(4)选择从设备文件还原,并选定要还原的数据库备份文件。

(5)如果提示还原成功,则该数据库的还原过程结束。

 

图1 错误提示
但在本例中却出现图1所示的错误提示:“设备激活错误。物理文件名:‘d:\MSSQL\data1\ TRACKIT60_DATA.mdf’可能有误”。说明该物理文件可能不存在,由于本例中无数据库建库的相关信息,因此通常的还原步骤在此处就显得无能为力了。

实在没有办法的情况下,本人到网上进行了搜索,查看MSSQL数据库中关于*.bak备份文件如何还原的文档,结果一无所获。看来只有自己想办法了,最近使用UltraEdit比较顺手,因此我就使用该软件打开改数据库备份文件,抱着试一试的态度进行了分析。通过分析,我发现其中有一行中存在数据库文件的信息,即“d: \ M S S Q L \ d a t a \ T R A C K I T 6 0 _ D A T A . m d f”(如图2)。
 

图2 数据库文件信息

 

图3 设置正确路径
该文件就是原来的数据库文件所在的物理路径,然后我在服务器上的D盘新建了“MSSQL”文件夹,再在“MSSQL”文件夹中新建“Data”文件夹。再次使用MSSQL中的数据库还原功能进行还原,在还原时需要在还原“选项”中设置逻辑文件名的正确路径(如图3)。

设置完成后单击“确定”按钮进行数据库还原。接下来就是紧张的等待,看见进度指示条正常显示进度时,我终于松了一口气,数据库还原成功,呵呵,可以向老板交差了。

后来,本人对其进行了分析,Microsoft SQL Server数据库在备份时是对Microsoft SQL Server所安装的数据库进行备份,其备份文件还原时只认安装数据库后所创建物理数据库文件的路径,换句话说,要进行还原时必须存在当时所创建数据库文件的文件夹,如果不存在就会报错,导致数据库还原不成功。而如果仅仅只有一个以bak为后缀的数据库备份文件,则可以通过UltraEdit等软件获取其中关于*.mdf文件的文件信息,如果其中包含驱动器符号,则该文件信息就是当初创建数据库文件的物理路径,按照该物理路径,依次按照文件信息建立文件夹,然后就可以按照正常的数据库还原方法进行还原了。