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

IamGood 2004-12-22 01:33:19
sql server 数据库置疑问题。我的电脑突然断电,重启动后数据库变为置疑状态。不知道那位知道是什么原理(原因),怎么解决?
...全文
360 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
数据库的脚本创建一个新的数据库,并将数据导进去就行了.

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧