当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server 2005日志文件损坏的处理方法

MSSQL
如何让新安装的MySQL数据库变得更安全
考虑SQL Server安全时所应注意的几个方面
快速解决SQL server 2005孤立用户问题
比较一下看看自己掌握了多少SQL快捷键
怎样在SQL Server 2005中用证书加密数据
讲解使用SQL Server升级顾问的详细步骤
讲解设计应用程序时避免阻塞的八个准则
配置SQL Server文件组对应不同的RAID系统
讲解数据库管理系统必须提供的基本服务
讲解SQL Server2005数据项的分拆与合并
SQL Server数据库动态交叉表的参考示例
SQL SERVER 2005中的同步复制技术
SQL Server查询速度慢的原因及优化方法
减少SQL Server死锁的方法
sql server 视图作用
扩展数据库系统选项实现更高的可扩展性
SQL Server开发过程中的的常见问题总结
对跨多个表格的数据组合时需要用到的SQL
SQL Server 2005 FOR XML嵌套查询使用详解
另类解读SQL Server中的DateTime数据类型

MSSQL 中的 SQL Server 2005日志文件损坏的处理方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 113 ::
收藏到网摘: n/a

在实际的工作和学习中,许多人的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文件丢失也可以进行恢复。