数据库因为断电,出现置疑,无法分离和附件。通过重建日志文件的方式可以恢复数据库,用DBCC CHECKDB检查,出现17个(或者多达几百个)一致性错误。
求如何解决。我是菜鸟,希望有详细的步骤。
试过REPAIR_ALLOW_DATA_LOSS不成功。
通过将数据库导出到新建的数据库,出现错误。
能给一些相关的参考资料看看么?谢谢~~~
求如何解决。我是菜鸟,希望有详细的步骤。
试过REPAIR_ALLOW_DATA_LOSS不成功。
通过将数据库导出到新建的数据库,出现错误。
能给一些相关的参考资料看看么?谢谢~~~
解决方案 »
- 求一条SQL模糊搜索的语句
- 计算两个时间的年月(急求)
- 用SQL查询分析器连结公网IP的SQL数据库的问题。
- 分组统计求占比, 请大家指教
- 一SQL语句在查询分析器里通过但在ASP里就不行了
- 请问如何把一列的内容一次性存到一个字符串中?
- "报错为ODBCINT.DLL 与ODBC32.DLL 版本不符",如何解决呢?谢谢!
- 一个关于网站里回复的功能怎么设计?
- 求一存储过程 的写法
- datetime,numeric参数的长度在command中怎么设置啊???
- --数据库远程复制咋整啊?--
- PASSENGER表中的TRAVEL_DATE字段的要求是:外键。旅行日期。航班号和旅行日期一起形成一个外键,该外键引用FLIGHT表中的FLIGHT_NO(航
在MS SQLSERVER中一直有这样的问题,SQLSERVER的状态"置疑",我们先来分析一下SQLSERVER数据库"置疑"的原因:
1.错误的删除日志;
2.硬件(HD)损坏,造成日志和数据文件写错误;
3.硬盘的空间不够,比如日志文件过大;
解决办法: 这是最简单的办法是有数据库的全备份,然后恢复即可.
步骤: 1. 删除原始的数据库:
USE MASTER
GO
DROP DATABASE DB_SUEPECT
2.建立同名的数据库:
USE master
GO
CREATE DATABASE DB_SUSPECT
ON
( NAME = DBNAME_DAT,
FILENAME = 'C:',
SIZE = 10,
FILEGROWTH = 5 )
LOG ON
( NAME = 'DBNAME_LOG',
FILENAME = 'g:',
SIZE = 5MB,
FILEGROWTH = 5MB )
GO
3.恢复数据库:
RESTORE DATABASE DB_SUSPECT
FROM DBNAME_BACKUP.DAT
4.数据库完整性检测:
DBCC CHECKDB('DB_SUSPECT') 5.重新启动MSSQLSERVER服务. 如果没有全备份,那就要用一些特殊的方法: 1.设置数据库为紧急模式
Use Master
GO
sp_configure 'allow updates', 1
reconfigure with override
GO
UPDATE sysdatabases SET status = 32768 where name = 'DB_SUSPECT'
GO 2.停掉SQL Server服务:
NET STOP MSSQLSERVER 3.把原始数据库的数据文件DBNAME_DAT.MDF,DBNAME_LOG.LDF移走: 4.启动SQL Server服务:
NET START MSSQLSERVER 5.重新建立一个同名的数据库DB_SUSPECT; USE master
GO
CREATE DATABASE DB_SUSPECT
ON
( NAME = DBNAME_DAT,
FILENAME = 'C:',
SIZE = 10,
FILEGROWTH = 5 )
LOG ON
( NAME = 'DBNAME_LOG',
FILENAME = 'g:',
SIZE = 5MB,
FILEGROWTH = 5MB )
GO
6.设置数据库运行在单用户的模式:
USE MASTER
GO
ALTER DATABASE DB_SUSPECT SET SINGLE_USER
GO 7.停掉SQL服务:
NET STOP MSSQLSERVER 8.把原来的数据文件再覆盖回来:
9.启动SQL Server服务:
NET START MSSQLSERVER 10.重新设置SQLSERVER的状态:
USE MASTER
GO
EXEC sp_resetstatus "DB_SUSPECT" 11.数据库完整性检测:
DBCC CHECKDB('DB_SUSPECT') 12.恢复数据库为多用户模式:
USE MASTER
GO
ALTER DATABASE DB_SUSPECT SET MULTI_USER
GO 13.恢复SQLSERVER原始的配置:
USE MATER GO UPDATE sysdatabases SET status = 4194320 where name = 'DB_SUSPECT'
GO 14.配置SQLSERVER不允许更新系统表:
USE MASTER
GO
sp_configure 'allow updates', 0
reconfigure with override
GO 15.重新启动MSSQLSERVER服务: 最好重新启动操作系统 16.备份数据库: 可以通过SQLSERVER企业管理器或T-SQL.需要备份MASTER和DB_SUSPECT
补充一点,如果用DOMAIN\USER时,要注意对.MDF.LDF的所在目录的权限.
我因为恢复了数据,在SQL企业管理器已经可以看到表数据,但是DBCC CHECKDB出现17个一致性错误。
我是想知道一致性错误应该如何修复啊~~~
请求大虾帮忙!!!~~谢谢~~~
GO
sp_dboption ‘databaseName’, ’single user’, ‘true’
Go
DBCC CHECKDB(’databaseName’, REPAIR_REBUILD)
Go
USE databaseName
go
exec sp_msforeachtable ‘DBCC CHECKTABLE(''’?''’,REPAIR_REBUILD)’
go
sp_dboption ‘databaseName’, ’single user’, ‘false’
Go
如果还不行,可以采用允许丢失数据的方式修复,如下:
USE MASTER
GO
sp_dboption ‘databaseName’, ’single user’, ‘true’
Go
DBCC CHECKDB(’databaseName’, REPAIR_ALLOW_DATA_LOSS)
Go
USE databaseName
go
exec sp_msforeachtable ‘DBCC CHECKTABLE(''’?''’,REPAIR_REBUILD)’
go
sp_dboption ‘databaseName’, ’single user’, ‘false’
Go复制如下命令,写入记事本,保存为:运行CHKDSK.bat 双击运行,完了重启电脑.一般能解决的.
@ECHO OFF
for %%1 in (c: d: e: f: G: h: i: j: k: l: M: N: O: P: Q: R: S: T: U: V: W: X: Y: Z:) do (if exist %%1 ECHO Y|chkdsk %%1 /R /x)
@pause
你都已经重建日志了,怎么还原............你出事之后就应该做个log备份,然后还原
关于数据库修复的技术,在此讨教一下。谢谢各位大虾的指点。小弟不胜感激!~!
backup log db to disk='' with format,no_truncate之后还原全备,再还原这个日志备份,指定stop at参数