SQL server 2008 (R2) 无日志文附加数据库

时间:2023-01-30 21:55:15

在做金融数据的时候SQL server也用得比较多,时常迁移数据库就会碰到这类问题。这里转载高手文章,Mark一下。

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

SQL server 2008 (R2) 无日志文附加数据库

SQL server 2008 (R2) 无日志文附加数据库

针对以上现象有两个写法的语句能解决:
写法一:
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='数据库名';