SQL Server数据库置疑的解决方法文档格式.docx

上传人:b****6 文档编号:20911068 上传时间:2023-01-26 格式:DOCX 页数:10 大小:19.10KB
下载 相关 举报
SQL Server数据库置疑的解决方法文档格式.docx_第1页
第1页 / 共10页
SQL Server数据库置疑的解决方法文档格式.docx_第2页
第2页 / 共10页
SQL Server数据库置疑的解决方法文档格式.docx_第3页
第3页 / 共10页
SQL Server数据库置疑的解决方法文档格式.docx_第4页
第4页 / 共10页
SQL Server数据库置疑的解决方法文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

SQL Server数据库置疑的解决方法文档格式.docx

《SQL Server数据库置疑的解决方法文档格式.docx》由会员分享,可在线阅读,更多相关《SQL Server数据库置疑的解决方法文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

SQL Server数据库置疑的解决方法文档格式.docx

置疑的数据库名'

Go

sp_dboption'

'

singleuser'

true'

DBCCCHECKDB('

updatesysdatabasessetstatus=28wherename='

sp_configure'

allowupdates'

0reconfigurewithoverride

Go

false'

6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用数据库的脚本创建一个新的数据库,并将数据导进去就行了。

SQLServer数据库文件恢复技术:

SQLServer数据库备份有两种方式,一种是使用BACKUPDATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式。

下面将主要讨论一下后者的备份与恢复。

本文假定您能熟练使用SQLServerEnterpriseManager(SQLServer企业管理器)和SQLServerQuweyAnalyser(SQLServer查询分析器)

1、正常的备份、恢复方式

正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断开,或者停掉整个数据库服务器,然后复制文件。

卸下数据库的命令:

Sp_detach_db数据库名

连接数据库的命令:

Sp_attach_db或者sp_attach_single_file_db

s_attach_db[@dbname=]′dbname′,[@filename1=]′filename_n′[,...16]

sp_attach_single_file_db[@dbname=]′dbname′,[@physname=]′physical_name′

使用此方法可以正确恢复SQLSever7.0和SQLServer2000的数据库文件,要点是备份的时候一定要将mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。

例子:

假设数据库为test,其数据文件为test_data.mdf,日志文件为test_log.ldf。

下面我们讨论一下如何备份、恢复该数据库。

卸下数据库:

sp_detach_db'

test'

连接数据库:

sp_attach_db'

'

C:

\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\test_data.mdf'

\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\test_log.ldf'

sp_attach_single_file_db'

2、只有mdf文件的恢复技术

由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。

如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息

设备激活错误。

物理文件名'

\ProgramFiles\MicrosoftSQLServer\MSSQL\data\test_Log.LDF'

可能有误。

已创建名为'

\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\test_log.LDF'

的新日志文件。

但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也许上述办法就行不通了。

你也许会得到类似下面的错误信息

服务器:

消息1813,级别16,状态2,行1

未能打开新数据库'

CREATEDATABASE将终止。

d:

\test_log.LDF'

怎么办呢?

别着急,下面我们举例说明恢复办法。

A.我们使用默认方式建立一个供恢复使用的数据库(如test)。

可以在SQLServerEnterpriseManager里面建立。

B.停掉数据库服务器。

C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。

D.启动数据库服务器。

此时会看到数据库test的状态为“置疑”。

这时候不能对此数据库进行任何操作。

E.设置数据库允许直接操作系统表。

此操作可以在SQLServerEnterpriseManager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。

也可以使用如下语句来实现。

usemaster

go

1

go

reconfigurewithoverride

F.设置test为紧急修复模式

updatesysdatabasessetstatus=-32768wheredbid=DB_ID('

此时可以在SQLServerEnterpriseManager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表

G.下面执行真正的恢复操作,重建数据库日志文件

dbccrebuild_log('

执行过程中,如果遇到下列提示信息:

消息5030,级别16,状态1,行1

未能排它地锁定数据库以执行该操作。

DBCC执行完毕。

如果DBCC输出了错误信息,请与系统管理员联系。

[brown][/i]

说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQLServerEnterpriseManager打开了test库的系统表,那么退出SQLServerEnterpriseManager就可以了。

正确执行完成的提示应该类似于:

警告:

数据库'

的日志已重建。

已失去事务的一致性。

应运行DBCCCHECKDB以验证物理一致性。

将必须重置数据库选项,并且可能需要删除多余的日志文件。

此时打开在SQLServerEnterpriseManager里面会看到数据库的状态为“只供DBO使用”。

此时可以访问数据库里面的用户表了。

H.验证数据库一致性(可省略)

dbcccheckdb('

一般执行结果如下:

CHECKDB发现了0个分配错误和0个一致性错误(在数据库'

中)。

I.设置数据库为正常状态

dbouseonly'

如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。

J.最后,我们需要将步骤E中设置的“允许对系统目录直接修改”一项恢复。

因为平时直接操作系统表是一件比较危险的事情。

当然,我们可以在SQLServerEnterpriseManager里面恢复,同时也可以使用下面的语句来完成。

0

sqlserver2000数据库置疑的解决方法 

 

选择自smilegw的Blog

关键字

sqlserver2000数据库置疑的解决方法

出处

先分离数据库

企业管理器--右键suspect的数据库--所有任务--分离数据库

然后备份你的suspect数据库的文件,再按下面的步骤处理:

1.新建一个同名的数据库

2.再停掉sqlserver

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

4.再重启sqlserver

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

his222'

6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用

数据库的脚本创建一个新的数据库,并将数据导进去就行了.

如果这样改不加数据库状态,你就把数据库导成一个新库来代替旧库吧

企业管理器--右键你的数据库--所有任务--导出数据

--目标标数据库选择新建

--选择"

在两个sql数据库之间复制对象和数据"

--把"

包含扩展属性"

选上,其他的根据需要选择

--最后完成

*****************************************************************

*这类故障是一般是由于磁盘读写问题造成的。

*下面的语句是修复总部数据库的SQL,如需要修复分部的数据库,请将'

hbposv5'

改为'

hbposv5_branch'

*超市之星系统直接执行

*快捷通、进销存系列,请将'

改为'

isd2001v3'

,如果是分部,改为'

isd2001v3_branch'

*商务通系列,请将'

isd2001v4'

isd2001v4_branch'

******************************************************************/

--请在查询分析器中执行下列语句.执行前断开其它所有数据库连接,最好是断开网线

USEmaster

--单用户模式

EXECsp_dboption'

TRUE'

--数据库检查

DBCCCHECKDB('

--如果返回结果出现了红色的提示文字,说明数据库中存在错误,需要修复

--数据库修复

repair_rebuild)

--再次数据库检查,如果返回结果中没有了红色的提示文字,说明修复成功;

--否则意味着还需要更高级别的修复;

尝试将上面修复语句的'

repair_rebuild'

换为'

repair_allow_data_loss'

再试,之后再次检查数据库。

--如果还有错误未修复,

--退出前请一定要执行以下语句返回到多用户模式

FALSE'

数据库置疑处理方法

步骤1:

创建一个新的数据库,命名为原来数据库的名字。

步骤2:

停止SQLServer

步骤3:

把老数据库的MDF文件替换新数据库的相应的MDF文件,并把LDF文件删除。

步骤4:

重新启动SQLServer服务,然后运行如下命令:

UseMaster

1

begintran

updatesysdatabasessetstatus=32768wherename='

--Verifyonerowisupdatedbeforecommitting

committran

步骤5:

停止SQL然后重新启动SQLServer服务,然后运行如下命令:

DBCCTRACEON(3604)

DBCCREBUILD_LOG('

db_name'

c:

\mssql7\data\hbposv5_log.ldf'

步骤6:

停止SQL然后重新启动SQLServer服务,然后运行:

updatesysdatabasessetstatus=8wherename='

0

步骤7:

运行dbcccheckdb(hbposv5)检查数据库的完整性

注:

都要替换成真实的数据库名字。

在表中酸出错误的商品

useisd2001v4_branch

delete 

frombi_t_item_infowhereitem_no='

6911988010193'

SQLServer2000数据库置疑的解决方法

出处:

天极网 作者:

X 2006-09-1409:

53 评论

字体大小:

大|中|小

  先分离数据库

  企业管理器--右键suspect的数据库--所有任务--分离数据库

  然后备份你的suspect数据库的文件,再按下面的步骤处理:

  1.新建一个同名的数据库

  2.再停掉sqlserver

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

  4.再重启sqlserver

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

  USEMASTER

  GO

  SP_CONFIGURE'

  UPDATESYSDATABASESSETSTATUS=32768WHERENAME='

  Go

  sp_dboption'

  DBCCCHECKDB('

  updatesysdatabasessetstatus=28wherename='

  sp_configure'

  6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用

  数据库的脚本创建一个新的数据库,并将数据导进去就行了.

  如果这样改不加数据库状态,你就把数据库导成一个新库来代替旧库吧

  企业管理器--右键你的数据库--所有任务--导出数据

  --目标标数据库选择新建

  --选择"

  --把"

  --最后完成

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1