SQl数据库被置疑!!!高手请进!!

SQl数据库被置疑!!!高手请进!!,第1张

假定数据名为AA

1将AA_logldf文件备份到其它目录下;

2将源目录下的AA_logldf文件改名为smlog_log_bakldf;

3在查询分析器中执行以下语句修改数据库的状态:

use Master

go

update sysdatabases set status=32768 where name='AA' --修改状态

go

shutdown with nowait --停止数据库服务器

go

4退出SQL并在命令行模式中执行以下代码:

sqlservr -c -T3608 -T4022 --安全模式启动SQL SERVER

5在查询分析器中执行以下语句来查看刚刚修改过状态的数据库状态:

select Name,Status from sysdatabases where Name='AA'

6在查询分析器中执行以下代码重建日志文件:

dbcc traceon(3604) --跟踪

dbcc rebuild_log('AA','AA') --文件名要有全路径和扩展名

本步骤如果成功,继续执行下一步的 *** 作,如果报错,也可以不管它继续下一步,也可以将 *** 作之前建立的同名空数据库日志文件COPY过来就行。

7在查询分析器中执行以下代码将数据库置回正常状态:

update sysdatabases set status=0 where name='AA'

8重新启动数据库后执行以下语句检查数据库:

DBCC CHECKDB --如果执行完有错误用以下910两步语句修复

9要修复数据库必需将数据库改为单用户模式:

Exec sp_dboption '数据库名称','single user','true'

10执行以下语句修复数据库:

DBCC CHECKDB('AA',REPAIR_ALLOW_DATA_LOSS)

11将数据库改为多用户模式:

Exec sp_dboption 'AA','single user','false'

12重新启动电脑,成功!

一般在 安装目录\MSSQL\Data下

出现这种情况是你把mdf弄丢了

没有其他备份数据就没了

不过你可以下载个硬盘数据恢复先看看能不能把mdf文件恢复过来,不能就没戏了

在MS 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_BACKUPDAT

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_DATMDF,DBNAME_LOGLDF移走:

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时,要注意对MDFLDF的所在目录的权限

灵验脚本

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

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

--before running any script, run the following to set the

master database to allow updates

USE master

GO

sp_configure 'allow updates', 1

GO

RECONFIGURE WITH OVERRIDE

GO

--Run the following script

UPDATE mastersysdatabases SET status = status ^ 256

WHERE name = 'Database_Name'

--Run the following script

exec SP_resetstatus Database_Name

--stop and start the MSDTC at this stage

--After the procedure is created, immediately disable

updates to the system tables:

exec sp_configure 'allow updates', 0

GO

RECONFIGURE WITH OVERRIDE

GO

1 SQL Server所在分区空间是否够?数据库文件大小是否达到最大文件限制?

2 数据库文件损坏或被非正常删除时出现这种情况

3 病毒防火墙的扫描也会引起数据库置疑

INF: Consideration for a virus scanner on a computer that is running SQL Server 2000

>

应该是磁盘出问题了吧恢复的可能性很小

解决方案如下:

1首先将数据库备份,也就是将DATA目录下的那两个文件COPY出来,前提是在MSSQL SERVER停止运行的状态下如果COPY的时候提示I/O错误,就说明磁盘有问题了这个就不能恢复了如果能的话,就使用SQL的附加数据库功能, 将这两个文件加进来一切OK

当数据库主文件丢失或者和服务器和数据库文件丢失连接时就这样

请输入你的答案

数据库926错误解决方案在做任何 *** 作前首先备份数据库的数据文件和日志文件!以及最新的备份文件!第一种解决方法:先删除报错数据库,再新建一同名数据库,然后暂停Service

manager(及sql

server

服务)

,删除库文件和日志文件再启动Service

manager

,使用单数据文件恢复数据库命令恢复数据库。例:打开sql

server/tools/sql

server

query

analyzer

执行下面 *** 作

EXEC

sp_attach_single_file_db

@dbname

=

'pubs',

@physname

=

'c:\mssql7\data\pubsmdf'

说明:‘pubs’为要恢复的数据库名称,‘c:\mssql7\data\pubsmdf’为要恢复的数据库的库文件的具体路径和文件名称。再重新启动一下service

manager

,看能否正常打开处理后的数据库;如果不可以再使用第二种方案。第二种解决方法:打开sql

server/tools/sql

server

query

analyzer

执行下面 *** 作

USE

MASTER

GO

sp_configure

'allow

update',1

RECONFIGURE

WITH

OVERRIDE

GO

UPDATE

sysdatabases

set

status

=

32768

WHERE

name

=

'db_pos363'

GO

sp_configure

'allow

update',0

RECONFIGURE

WITH

OVERRIDE

GO

说明:'db_pos363'是要修复的数据库名称。执行完毕再重启一下Service

manager打开数据库看是否处于紧急状态!再从另一装有sql

2000的机器上连接报错的数据库,然后再在sql

2000的机器上新建一数据库,再使用sql

2000自带的数据库导入导出功能(在新建的数据库上单击右键/所有任务/数据导入、数据导出)从报错数据库导入数据到新建的数据库中!在导入选项中注意以下几项:

1,

导入方式选择分‘从源数据库复制表和视图’以及‘从sql

server数据库间复制对象和数据’。当选择从源数据库复制表和视图时一定要选择全部表!

2,

当选择‘从sql

server数据库间复制对象和数据’时,在‘导入导出向导’对话框中去除‘使用默认选项’的选中标志;再在打开‘选项’对话框,去除以下三项的选中标志。A,复制数据用户和数据库角色;B,复制sql

server

登陆;C,复制对象及权限。

3,

在使用‘从sql

server数据库间复制对象和数据’时,有时会出现单张表导入失败,这时有时会在导入结束时提示那几张表导入失败有时不提示,如果提示,就再使用‘从源数据库复制表和视图’并选中导入失败的表重新导入一遍;如果不提示就只能在一张张表打开查看了,发现空表后再使用‘从源数据库复制表和视图’导入需要导入的表!导入成功后再删除sql

server

70机器上处于紧急状态的数据库,再新建一个同名数据库,建好后再使用sql

2000的数据库导出功能导出到此数据库中,在导出过程中同样要注意导入时的注意事项!

以上就是关于SQl数据库被置疑!!!高手请进!!全部的内容,包括:SQl数据库被置疑!!!高手请进!!、如何分析sql2000数据库置疑的原因、SQL2000数据库突然置疑 这是什么原因造成的 我先介绍下现象。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9275380.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存