-- =============================================
-- Attach database via sp_attach_single_file_db
-- =============================================
-- note: it builds a new log file and performs additional cleanup work 
--   to remove replication from the newly attached database
EXECUTE sp_attach_single_file_db @dbname   = N'<database_name, sysname, test_db>', 
           @physname = N'<physname, nvarchar(260), c:\program files\microsoft sql server\mssql\data\test_db.mdf>'
GO
-- =============================================
-- Attach database via sp_attach_db
-- =============================================
EXECUTE sp_attach_db @dbname    = N'<database_name, sysname, test_db>', 
         @filename1 = N'<filename1, nvarchar(260), c:\program files\microsoft sql server\mssql\data\test_db.mdf>',
         @filename2 = N'<filename2, nvarchar(260), c:\program files\microsoft sql server\mssql\data\test_db_log.ldf>'
GO

解决方案 »

  1.   

    新建一同名数据库(文件名,文件组都和原来的一样),然后停止数据库服务,用原来文件替换新建的数据库文件,启动数据库,该数据库被设未suspect然后把数据库改成紧急模式:
    sp_configure 'allow', 1
    reconfigure with override
    update sysdatabases set status = 32768 where name = '数据库名'把LDF文件改名,再执行
    DBCC REBUILD_LOG ('数据库名', 'E:\fdzz\database\fdzz1204_Log.LDF' )恢复数据库紧急模式
    update sysdatabases set status = 0 where name = '数据库名'
    执行
    restore database 数据库名 WITH RECOVERY
    sp_configure 'allow', 0
    reconfigure with override然后用DBCC CHECKDB ('数据库名')看看有没有错误如果上面还是不行,试试吧数据库设为紧急模式,应该可以看到数据了,在把数据导出到一个新的数据库