2k:
对SQL中的日志文件不慎删除后,附加MDF文件,提示LDF文件有问题,导致MDF无法附加的情况,错误提示是
未能打开新数据库 'smartcard'。CREATE DATABASE将终止
日志文件 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\smartcard_log.ldf' 与主文件不匹配,可能该文件来自另一个数据库,也可能重建过该日志。
一种解决办法是:
1、把需要附加的数据库的MDF文件改名;
2、建一个相同的数据库。库文件名称为要附加的数据库名。
3、打开服务管理器(通常情况下应该在托盘),停止服务
3、将新建的数据库文件的MDF文件删掉,并将原有的数据库mdf文件该为原来的名字
4、重启sql server服务 ,此时数据库变为置疑状态
5、执行以下语句:
sp_configure 'allow updates', 1 reconfigure with override update sysdatabases set status='32768' where name='northwnd' DBCC rebuild_log ('northwnd','日志路径\northwnd') update sysdatabases set status='0' where name='northwnd' sp_configure 'allow updates', 0 reconfigure with override
重置数据库异常状态命令
sp_resetstatus 'database_name'
到此时,表面上数据库没有什么问题了,实际上此时数据库处于回避恢复模式。
新建一数据库,将原来的数据导入到新建的数据库中,完毕后将原来的数据库删除,新建,
然后将数据重新导入,就行了。
需要注意的是,SQL在进行数据导入导出的时候,原始表的主建信息会丢掉,所以需要注意以下。
2K5:
2k5已经不再提供操作sysdatabases的办法了,所以用allow updates也没有什么用,但是仍然提供了一下的方法:
EXEC sp_attach_single_file_db @dbname = 'northwnd', @physname = 'e:\northwnd.mdf'
同样可以附加数据库上去。