• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

sql server 数据库置疑问题。我的电脑突然断电,重启动后数据库变为置疑状态。

IamGood 2004-12-22 01:33:19
sql server 数据库置疑问题。我的电脑突然断电,重启动后数据库变为置疑状态。不知道那位知道是什么原理(原因),怎么解决?
...全文
299 点赞 收藏 5
写回复
5 条回复
steelmqb1 2005年01月17日
up
回复 点赞
steelmqb1 2004年12月23日
up
回复 点赞
iswear428 2004年12月22日
up
回复 点赞
mschen 2004年12月22日
转贴自www.winmag.com.cn

在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
回复 点赞
631799 2004年12月22日

.新建一个同名的数据库

2.再停掉sql server

3.用suspect数据库的文件覆盖掉这个新建的同名数据库

4.再重启sql server

5.此时打开企业管理器时新建的同名数据库会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)


USE MASTER
GO

SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO

UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的同名数据库名'
Go

sp_dboption '置疑的同名数据库名', 'single user', 'true'
Go

DBCC CHECKDB('置疑的同名数据库名')
Go

update sysdatabases set status =28 where name='置疑的同名数据库名'
Go

sp_configure 'allow updates', 0 reconfigure with override
Go

sp_dboption '置疑的同名数据库名', 'single user', 'true'
Go

6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
数据库的脚本创建一个新的数据库,并将数据导进去就行了.
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告