附加数据库,附加的时候会提醒找不到log文件

Sql Server 附加没有日志文件的数据库(.mdf)文件方法_数据库

Sql Server 附加没有日志文件的数据库(.mdf)文件方法_数据库_02


针对以上现象有两个写法的语句能解决:


写法一:



USE MASTER;


EXEC sp_detach_db @dbname = 'TestDB';


EXEC sp_attach_single_file_db @dbname = 'TestDB',


     @physname = 

     'D:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008\MSSQL\DATA\TestDB.mdf'  

 


写法二:



CREATE DATABASE TestDB  


ON 


(


    FILENAME =


    'D:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008\MSSQL\DATA\TestDB.mdf' --输入.mdf的文件所在目录

) FOR ATTACH_REBUILD_LOG

 


写法三:



CREATE DATABASE TestDb ON
( FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008\MSSQL\DATA\TestDB.mdf')
FOR ATTACH
GO


在查询窗口执行,可能会输出如下提示:



文件激活失败。物理文件名称'D:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008\MSSQL\DATA\TestDB.ldf'可能不正确。


新的日志文件 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008\MSSQL\DATA\TestDB_log.LDF' 已创建。


 


我的理解是可能是原先日志文件名可能与系统命名规则不匹配,但此时刷新下数据库就能看到已附加了数据库文件


 


分离数据库:



exec sp_detach_db @dbname='数据库名';