當前位置:歷史故事大全網 - 範文作文 - SQL2000数据库突然置疑 这是什么原因造成的 我先介绍下现象。

SQL2000数据库突然置疑 这是什么原因造成的 我先介绍下现象。

在MS SQLSERVER中一直存在这样的问题,SQLSERVER的状态“置疑”,原因如下几条:

1.错误的删除日志;

2.硬件(HD)损坏,造成日志和数据文件写入错误;

3.硬盘空间不够,比如日志文件过大;

解决方法:

最简单的方法是有数据库的全部备份,然后恢复即可。

步骤:

1. 删除原始的数据库:

USE MASTER

GO

DROP DATABASE DB_SUEPECT

2.建立同名的数据库:

使用master

开始

创建数据库DB_SUSPECT

ON

( NAME = DBNAME_DAT,

FILENAME = 'C:',

SIZE = 10,

FILEGROWTH = 5 )

登录

( NAME = 'DBNAME_LOG ',

FILENAME = 'g:',

大小 = 5MB,

文件增长 = 5MB )

开始

3.数据库恢复:

RESTORE DATABASE DB_SUSPECT

FROM DBNAME_BACKUP.DAT

4.数据库缺陷检测:

DBCC CHECKDB('DB_SUSPECT')

5.重新启动MSSQLSERVER服务。

如果没有完整备份,那就要用一些特殊的方法:

1 .设置数据库为紧急模式

使用Master

GO

sp_configure '允许更新',1

重新配置并覆盖

继续

UPDATE sysdatabases SET status = 32768 where name = 'DB_SUSPECT'

继续

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数据库 DB_SUSPECT

ON

( NAME = DBNAME_DAT,

FILENAME = 'C:',

SIZE = 10,

FILEGROWTH = 5 )

登录

( NAME = 'DBNAME_LOG',

FILENAME = 'g:',

大小= 5MB,

文件增长= 5MB)

开始

p>

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 '允许更新', 0

重新配置覆盖

GO

15.重新启动MSSQLSERVER服务:

最好重新启动操作系统

16.备份数据库:

可以通过SQLSERVER企业管理器或T-SQL。需要备份MASTER和DB_SUSPECT

补充一点,如果用DOMAIN\USER时,要注意对.MDF.LDF 的所在目录的权限。

灵验脚本

遇到这种数据库置疑情况,就运行下面这个脚本,屡试不爽:

==================================================== ======

--在运行任何脚本之前,运行以下命令来设置

master数据库允许更新

USE master

执行

sp_configure '允许更新',1

执行

使用覆盖重新配置

执行

--运行以下脚本

UPDATE master..sysdatabases SET status = status ^ 256

WHERE name = 'Database_Name'

--运行以下脚本

exe

c SP_resetstatus Database_Name

--在此阶段停止并启动MSDTC

--创建过程后,立即禁用

对系统表的更新:

exec sp_configure '允许更新',0

继续

使用覆盖重新配置

继续

  • 上一篇:北京朝陽區2021年醫師資格考試資格審核工作通知
  • 下一篇:關於某房地產公司工程質量管理制度分析?
  • copyright 2024歷史故事大全網