1、数据库文件组成:
     主文件:myuser.mdf
     数据文件:myser_data1.ndf
     数据文件:myser_data2.ndf
     日志文件:myser_log.ldf2、说明
由于误删除掉数据库myuser,我通过软件找回了以上文件,
但在附加时数据库报错误:5172

解决方案 »

  1.   

    SQL Server 2005数据库日志文件损坏的情况下如何恢复数据库 
    1)SQL Server 2005数据库删除日志文件DUMP  TRANSACTION  DatabaseName WITH  NO_LOG;declare @fileid int;select @fileid=fileid from sysfiles where name like '%Log';dbcc shrinkfile(@fileid)2)在某些偶然的情况下,会引起SQL Server 2005数据库日志文件的损坏,比如:硬件故障、计算机非正常重启或关机。
    当SQL Server 2005数据库日志文件损坏时,可能会出现以下情况:
    1、在SQL Server Management Studio中显示数据库处于置疑(suspect)状态。
    2、事件日志可能会出现如下错误信息:
       Could not redo log record (21737:686:9), for transaction ID (0:2334886), on page (1:37527), database 'Test' (database ID 15). Page: LSN = (21735:299:5), type = 2. Log: OpCode = 3, context 19, PrevPageLSN: (21737:615:1). Restore from a backup of the database, or repair the database.   During redoing of a logged operation in database 'Test', an error occurred at log record ID (76116:286:2). Typically, the specific failure is previously logged as an error in the Windows Event Log service. Restore the database from a full backup, or repair the database. 
    3、无法分离数据库
    4、用CREATE DATABASE DBName ON ( FILENAME = N'DBFile' )  FOR ATTACH_REBUILD_LOG附加数据库时出现提示:The log cannot be rebuilt because the database was not cleanly shut down.恢复方法:
    1、停止数据库服务。
    2、将需要恢复的数据库文件复制到另外的位置。
    3、启动数据库服务。
    4、确认要恢复的数据库文件已经成功复制到另外的位置,然后在SQL Server Management Studio中删除要恢复的数据库。
    5、新建同名的数据库(数据库文件名也要相同)。
    6、停止数据库服务。
    7、用第2步中备份的.mdf文件覆盖新数据库的同名文件。
    8、启动数据库服务。
    9、运行alter database dbname set emergency,将数据库设置为emergency mode
    10、运行下面的命令就可以恢复数据库:
    use master declare @databasename varchar(255) set @databasename='要恢复的数据库名称' exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态 dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态 上面的方法是通过.mdf文件恢复数据库,即使log文件丢失也可以恢复。
      

  2.   

    http://download.csdn.net/detail/xue1min2qin3/3305708
      

  3.   

    to DBA_Huangzj
    -----------------
    你好,按照代码执行后,数据库在执行dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) 
    时返回错误提示消息 922,级别 14,状态 1,第 2 行
    正在恢复数据库 'myuser'。请等待恢复操作完成。
      

  4.   

    现在数据库的状态是什么?数据库错误日志中有什么信息?有没有试过将数据库改为紧急状态然后运行DBCC CHECKDB?
      

  5.   

    你的数据库难道很大?要这么就,单用户比较麻烦,因为如果你的sql agent在运行,会占掉一个用户的。
      

  6.   


    也是一样正在恢复数据库 'myuser'。请等待恢复操作完成。
      

  7.   

    i'm sorry, 没想到那个人是骗子,呵呵!我赞同5#的观点,可能你恢复的数据库有损坏。
      

  8.   

    to iamaitman
    是的有可能
    --------------------------to SQL77
    是的,我新建立了同名字,文件都相同的数据库恢复的,但一直就是恢复中的状态,查看数据库属性也返回
    消息 922,级别 14,状态 1,第 2 行
    正在恢复数据库 'myuser'。请等待恢复操作完成。