方法1:***成功案例***
--把备份的数据库数据文件(*.mdf)和日志文件(*.ldf)都拷贝到服务器的一个目录下,然后打开SL Server uery (查询分析器)进行操作。
--例如:D盘Hisense\SysDate\目录下存有: DBtest_data.mdf,和DBtest_log.ldf备份的文件。通过sl 语恢复
--为DBtest的数据库名.(注:恢复为DBtest的数据库名在sl server 企管管理器下必须是唯一的,即没有DBtest数所库名才可以恢复为DBtest的数据库名)。
--操作步骤:
--1.打开sl server 下面的uery Analyzer(即查询分析器)
--2.输入:
EXEC sp_attach_db @dbname = N'DBtest',
@filename1 = N'D:\data\DBtest_Data.MDF',
@filename2 = N'D:\data\DBtest _Log.LDF'
go
--按”F5”执行。
--3.以执行完成后,把第2步中的所有语句全部删除,然后输入如下语句:
USE DBtest
EXEC sp_updatestats
Go
--按”F5”执行。
--提示所有表已经恢复成功后,即可连接软件了.
--另附:只恢复数据文件(*.mdf)时,不恢复事务日志文件(*.ldf)的方法如下:
--首先在企业管理器下,建立一个数据库名(如:@DBtest)
--然后,同样打开sl server 查询分析器,然后输入:
EXEC sp_attach_db @dbname = N'DBtest',@filename1 = N'D:\data\DBtest_Data.MDF'
EXEC sp_attach_single_file_db @dbname = DBtest, @physname = 'd:\Data\DBtest_data.mdf'
go
--按F5执行完后,再执行以下语句:
USE DBtest
EXEC sp_updatestats
Go
--这个语句的作用是仅仅加载数据文件,日志文件可以由SL Server数据库自动添加,但是原来的日志文件中记录的数据就丢失了。
--注:DBtest是数据库名
--文件名和路径一定要根据实际数据为文件(*.mdf)和事务日志文件(*.ldf)所在的目录要对应,否则路径输入的不对,则无法恢复。
方法2:***成功案例***
--如果是由于操作系统或sl server不能启动,只有保留的数据为文件(如:DBtest_data.mdf)和事务日志文件(DBtest_log.ldf)时,需重新安装操作系统或重新安装sl server时,一定要与上一次安装的路径相同(如: d:\Program Files\Microsoft SL Server\MSSL\Data\DBtest.mdf')
--(等同于在别的服务器安装一个新的数据库,在新服务器上创建同名DBtest,停止sql server服务,将保留原DBtest文件拷贝过来进行替换)。
--操作系统或sl server安装成功后,把sl server服务启动后,在查询分析器下面,建立与上次相同的数据库名(如:DBtest),数据库DBtest成功建立后,然后把sl server服务停止。
--然后把保留的数据为文件(如:DBtest_data.mdf)和事务日志文件(DBtest_log.ldf)拷贝到,新建立的DBtest数据库所在的目录下进行覆盖,然后重启sql server服务:
--你会发现数据库被标记为(紧急或者可疑),用以下方法把数据库恢复;
--也可用以下SQL语句把数据库改变为紧急状态:
update master.dbo.sysdatabases set status='32768' ----置成Emergency Mode (应急状态)
where name='DBtest' ----将DBtest替换为你已经损坏的数据库名
--提示”不允许对系统目录进行即席更新(可忽略,直接执行下面的语句)
--1、修改数据库为紧急模式
ALTER DATABASE DBtest SET EMERGENCY
--2、使数据库变为单用户模式
ALTER DATABASE DBtest SET SINGLE_USER
--3、修复数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象错误。当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修复报告的错误。但是,这些修复可能会导致一些数据丢失。
DBCC CheckDB (DBtest, REPAIR_ALLOW_DATA_LOSS)
----重建数据库日志重新生成,这些修复可能会导致一些数据丢失。(非必要条件,可忽略本语句)
DBCC CheckDB (DBtest,REPAIR_REBUILD)
--命令执行完成后可能会出现以下警告:
--警告: 数据库 '库名' 的日志已重新生成。已失去事务的一致性。RESTORE 链已断开,服务器不再有以前的日志文件的上下文,因此您需要了解它们的内容。应运行 DBCC CHECKDB 验证物理一致性。数据库已置于 dbo-only 模式。在准备使数据库可用时,需要重置数据库选项,并删除所有多余的日志文件。
--此时可以不用理会此警告,关闭Microsoft SQL Server Management Studio。
--4、重新打开Microsoft SQL Server Management Studio,使数据库变回为多用户模式
ALTER DATABASE DBtest SET MULTI_USER
--再次,打开Sql Server 2008时被标记为“可疑”的数据库已恢复正常状态,此时数据库已恢复成功。
--5、开始->运行->输入cmd->打开DOS命令窗口,输入以下命令重启数据库服务
Net stop mssqlserver --停止服务
Net start mssqlserver --启动服务
--序:如果还不能成功恢复,请另寻高明方法。