数据库被置疑后的解决方法

数据库被置疑后的解决方法
A.我们使用默认方式建立一个供恢复使用的数据库(如test)。

可以在SQL Server Enterprise Manager
里面建立。

B.停掉数据库服务器。

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

D.启动数据库服务器。

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

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

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

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

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

use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
F.设置test为紧急修复模式
update sysdatabases set status=-32768 where dbid=DB_ID('test')
此时可以在SQL Server Enterprise Manager里面看到该数据库处于"只读\置疑\脱机\紧急模式"可以
看到数据库里面的表,但是仅仅有系统表
G.下面执行真正的恢复*作,重建数据库日志文件
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')
执行过程中,如果遇到下列提示信息:
服务器: 消息5030,级别16,状态1,行1
未能排它地锁定数据库以执行该*作。

DBCC 执行完毕。

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

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

正确执行完成的提示应该类似于:
警告: 数据库'test' 的日志已重建。

已失去事务的一致性。

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

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

DBCC 执行完毕。

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

此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为"只供DBO使用"。

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

H.验证数据库一致性(可省略)
dbcc checkdb('test')
报错
设置单用户模式
exec sp_dboption ’test’, N'single', N'true' 若报:
则执行
I.设置数据库为正常状态
sp_dboption 'test','dbo use only','false'
-----在查询分析器master里,
①进行修复数据库
dbcc checkdb('test',REPAIR_ALLOW_DATA_LOSS)
dbcc checkdb('test',REPAIR_REBUILD)
②数据库所有表有损修复
exec sp_msforeachtable'DBCC CHECKTABLE(''?'',REPAIR_ALLOW_DATA_LOSS)' exec sp_msforeachtable'DBCC DBREINDEX(''?'')'
③④⑤⑥⑥如果出现三个系统表,sysobjects,sysindex,syscolumns出现一致
exec
exec syscolumns'')'
一般执行结果如下:
CHECKDB 发现了0 个分配错误和0 个一致性错误(在数据库'test' 中)。

DBCC 执行完毕。

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

I.设置数据库为正常状态
sp_dboption 'test','dbo use only','false'
如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。

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

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

当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用
如下语句完成
sp_configure 'allow updates',0
go
reconfigure with override
go
--数据库(如test) 分离后再附加
EXEC sp_detach_db 'test'
EXEC sp_attach_db 'victop','F:\victop\MSSQL$VICTOP\Data\victop.mdf',
'F:\victop\MSSQL$VICTOP\Data\victop_log.ldf'
--------索引重整
SET NO_BROWSETABLE OFF
go
Declare @DBName varchar(1000)
Set @DBName='Victop'
if object_id('Tempdb..#ReIndexDBTmp') is not null
drop table #ReIndexDBTmp
Create table #ReIndexDBTmp(TN SysName)
Insert into #ReIndexDBTmp Exec ('Select Name From '+@DBName+'.dbo.sysobjects Where xtype = ''U''')
Declare Cur cursor for select tn from #ReIndexDBTmp
Open Cur
Declare @Table SysName
Fetch next from Cur into @Table
While @@fetch_status = 0
Begin
Set @Table = @DBName+'.dbo.'+@Table
DBCC DBReindex (@Table)
Fetch next from Cur into @Table
End
Close Cur
Deallocate Cur
go
SET NO_BROWSETABLE ON
go
备份数据库:
backup database victop to disk='F:\victop.bak' 将用户至于单用户模式:
sp_dboption 'fdshop','single user','true'。

合集下载

关于数据库置疑之后连接不上解决办法

关于数据库置疑之后连接不上解决办法

关于数据库置疑之后连接不上解决办法技术支持三组[维护经验]2003-3-19 16:22:43关于数据库置疑之后连接不上解决办法数据库在使用的过程中,突然处于置疑状态,用通常连接数据库的三种方式连接都失败。

连接时详细错误为“错误9003:LSN无效。

该LSN是传递给数据库‘UFDATA_001_2003’中的日志扫描操作的”此种情况是因为数据库的日志文件崩溃。

碰见此类数据库日志文件出错的情况,用户数据如果又没有备份,想把数据恢复回来。

请按如下六步操作,假设用户出现置疑的数据库名为UFDATA_001_2003,(帐套为001)文件名为ufdata.mdf和ufdata.ldf.1)新建帐套130,路径为F:\data\2)停止SQL的服务,删除F:\data\zt130\2003下ufdata.mdf和ufdata.ldf,把原001帐套下的ufdata.mdf拷贝回F:\data\zt130\2003目录下3)重新启动SQL,此时数据库处于置疑状态。

4)在查询分析器里执行如下语句-----sp_configure 'allow updates', 1goreconfigure with overridegouse mastergoupdate sysdatabases set status = 32768where name = 'UFDATA_130_2003'gosp_configure 'allow updates', 0goreconfigure with override5)重新启动SQL service服务。

此时数据库已连接上,处于紧急模式。

只能用SQL语句在查询分析器里读出数据,不能进行其他任何操作。

6)在查询分析器里执行如下语句use masterdbcc rebuild_log( 'ufdata_130_2003', 'F:\data\ZT130\2003\ufdata.ldf')此时就重建了日志文件,数据库可以使用了。

数据库质疑解决办法

数据库质疑解决办法
(5)重新启动服务,并登录sqladvantage,将可疑用户数据库的status字段的值设为0,语句为update sysdatabases set status=0 where name="可疑用户数据库名"
(6)将SQL Server的“allow updates”属性恢复为不可修改 。语句为:sp_configure "allow updates" 0 6、数据库来自疑了怎么办?(一般解决方案)
(1)确定所有状态被标记为可疑(Suspect)的数据库名称因为若某个数据库处在可疑状态下,那么它在系统表sysdatabases中其status字段的值一定大于256,所以通过下面的操作可列出所有标记为可疑(Suspect)的数据库名称。
(2)在sqladvantage中输入select name from sysdatabases where status & 256 = 256 语句可查询哪些数据库置疑。一般情况下我们在Sybase central中点击数据库时会弹出置疑信息。
(3)备份master数据库。
(4)先将SQL Server的“allow updates”属性设为可修改,语句为:sp_configure "allow updates" 1
(4)修改系统表sysdatabases,将可疑用户数据库的status字段(共有4个状态)的值为-32768(“bypass recovery“,绕过恢复/复原),然后关闭SQL Server 。语句为:update sysdatabases set status=-32768 where name="可疑用户数据库名"
(7)重新启动服务。

SQL数据库置疑解决方案(原因分析、预防措施、修复方法)附图

SQL数据库置疑解决方案(原因分析、预防措施、修复方法)附图

SQL数据库置疑解决方案一、数据库置疑产生的原因1、SQL Server所在分区空间是否够?数据库文件大小是否达到最大文件限制?FAT32的格式只支持4G以内的文件。

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

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

4、当SQL Server启动时,将会尝试获得对数据库文件的排他访问权,如果此时该文件被其他程序占用,或者遗失,数据库将会被标记为置疑。

5、电脑非法关机也会造成数据库置疑。

6、电脑磁盘有坏道有可能造成数据库置疑。

二、数据库置疑的预防1、数据库存放的盘符,空间是否够大,经常检查盘符的空间。

2、数据库存放的盘符的格式设置为NTFS格式。

3、进行病毒清除时,尽量把SQL服务停掉,再进行检查。

4、尽量减少非正常关机。

5、建议客户购买后备电源。

6、给客户实施软件之后一定要做好自动备份。

7、建议客户每隔一定时间手动备份一次。

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

卸下数据库的命令:Sp_detach_db 数据库名连接数据库的命令:Sp_attach_db或者sp_attach_single_file_dbs_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′[,...16]sp_attach_single_file_db [@dbname =] ′dbname′, [@physname =] ′physical_name′使用此方法可以正确恢复SQL Sever7.0和SQL Server 2000的数据库文件,要点是备份的时候一定要将mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。

例子:假设数据库为pdm,其数据文件为pdm_data.mdf,日志文件为pdm_log.ldf。

sqlserver2000数据库置疑的4种解决方法

sqlserver2000数据库置疑的4种解决方法

s q l s e r v e r2000数据库置疑的4种解决方法本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.Marchsqlserver2000 数据库置疑的4种解决方法方法一:1.停止SQL Server的服务,然后备份MS SQL Server的安装目录下的\data 子目录.注意:整个目录目录备份或只备份data目录下置疑数据库的两个文件,一个数据文件,一个(也有可能非此命名),同时查看磁盘空间是否有足够的空间;2.启用SQL Server的服务。

打开查询分析器(Query Analyzer)的工具,以用户sa登录;3.输入如下指令后点工具栏上的绿色箭头运行(快捷键F5),use mastergosp_resetstatus dbnamego4.运行完毕后退出此工具,停止SQL Server的服务.5.在MS SQL Server的安装目录下,有一个\data子目录,其中存放数据文件,包括SQL Server和本系统的数据文件,删除置疑数据库的日志文件(也有可能非此命名).6.启动SQL Server的服务.7.打开企业管理器(Enterprise Manager)的工具,查看数据库(database)节点下的dbname是否恢复。

注:请将 dbname 换成你的数据库名称.方法二1.查看磁盘空间,保证存放数据库的磁盘有足够的剩余空间;2.打开SQL Server的查询分析器(Query Analyzer),以用户 sa 登录;3.输入如下指令后点工具栏上的绿色箭头运行(快捷键F5),运行完毕后退出此工具.use mastergosp_resetstatus dbnamego4.停止SQL Server 的服务,再重新启动SQL Server 服务.5.打开SQL Server 的查询分析器(Query Analyzer),以用户 sa 登录。

数据库置疑修复评析

数据库置疑修复评析

数据库置疑修复[评析]数据库置疑修复数据库置疑的解决方法:(1):如果是严重的置疑,就这样解决停止SQL服务,备份你的置疑的数据库的数据文件(直接将MDF,LDF文件拷贝出去就可以).然后启动SQL服务,再删除置疑的数据库然后按下面的步骤处理:1.新建一个同名的数据库2.再停掉sql server(注意不要分离数据库)3.用原数据库的数据文件覆盖掉这个新建的数据库4.再重启sql server5.此时打开企业管理器时会出现置疑,先不管,在SQL查询分析器中执行下面的语句(注意修改其中的数据库名)6.完成后(刷新数据库)一般就可以访问数据库中的数据了,这时,数据库本身一般还有问题,解决办法是,利用数据库的脚本创建一个新的数据库,并将数据导进去就行了.USE MASTERGOSP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDEGOUPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'Gosp_dboption '置疑的数据库名', 'single user', 'true'GoDBCC CHECKDB('置疑的数据库名')Goupdate sysdatabases set status =28 where name='置疑的数据库名'Gosp_configure 'allow updates', 0 reconfigure with overrideGosp_dboption '置疑的数据库名', 'single user', 'false'Go------------------------------------------------------------------------------------------------------------------------(2)重置置疑状态如果 SQL Server 因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复,那么 Microsoft? SQL Server? 2000 会返回错误 1105 并且将 sysdatabases 中的 status 列设为置疑。

数据库损坏和置疑修复方法

数据库损坏和置疑修复方法

数据库损坏和置疑修复方法为了修复数据库损坏,可以采取以下方法:1.备份恢复:如果有最新的备份文件,可以通过备份文件进行恢复。

恢复时应注意将损坏的数据库与备份文件进行比对,避免将损坏的数据库文件恢复到备份文件上。

2.日志文件恢复:数据库管理系统通常会有日志文件来记录数据的修改操作,使用日志文件可以恢复损坏的数据库。

通过日志文件,可以找到最近一次正常操作的记录,并恢复到该记录之后的状态。

3.数据库修复工具:数据库管理系统通常都提供了数据库修复工具,可以用于修复损坏的数据库。

修复工具能够检测数据库的完整性,并修复数据文件中的错误或者丢失的数据。

4.数据库重建:如果无法通过备份恢复或通过修复工具修复数据库,可以尝试重建数据库。

重建数据库可以通过创建新的数据库,然后将数据从旧数据库中导出并导入到新数据库中,实现数据的恢复。

5.异地备份:在数据库损坏之前,应该做好数据的备份工作,并将备份数据存储在其他地方。

这样即使数据库发生损坏,也能够通过备份数据进行恢复。

在修复数据库损坏时,需要注意以下几点:1.数据库损坏后,必须立即停止对数据库的操作,以免进一步损坏数据。

2.在使用数据库修复工具时,应该对数据库进行完整备份,以防修复过程中出现意外情况。

3.在修复过程中,应该小心操作,避免进一步损坏数据库文件或数据。

4.在数据库损坏修复完成后,应该对数据库进行全面的测试,以确保数据库的完整性和可用性。

5.定期进行数据库维护和优化工作,以减少数据库损坏的可能性。

总之,数据库损坏是一种常见的情况,但通过备份恢复、日志文件恢复、修复工具、数据库重建等方法,可以有效修复损坏的数据库。

在数据库损坏修复过程中,需要小心操作,避免进一步损坏数据。

同时,定期进行数据库维护和优化工作,可以减少数据库损坏的发生。

处理数据库置疑的方法

处理数据库置疑的方法处理数据库置疑的方法先分离数据库企业管理器--右键置疑的数据库--所有任务--分离数据库然后备份你的置疑数据库的文件,再按下面的步骤处理:1.新建一个同名的数据库2.再停掉sql server3.用置疑数据库的文件覆盖掉这个新建的同名数据库,只覆盖mdf文件,日志文件不要覆盖4.再重启sql server5.此时打开企业管理器时新建的同名数据库会出现置疑,先不管,打开查询分析器执行下面的语句(注意修改其中的数据库名)重建日志文件,经过修复后数据就可以正常分离并附加了,语句中“C:\置疑的同名数据库名_Log.ldf”是重建日志日志文件存放路径,在重建日志后,最好将数据库分离并将重新创建的日志文件拷贝到数据库文件所在目录,再重新进行附加。

--重建日志文件,修复损坏的日志USE MASTERSP___RE 'ALLOW __',1 __GURE WITH __EGOUPDATE __BASES SET STATUS =__ WHERE NAME='置疑的同名数据库名'Godbcc rebuild_log('置疑的同名数据库名','C:\置疑的同名数据库名_Log.ldf')GOupdate sysdatabases set status =28 where name='置疑的同名数据库名'Gosp_configure 'allow updates', 0 reconfigure with overrideGo6、数据库修复后还需要进行数据库检测,看是否存在一些错误,数据库检测需要用DBCC __命令,如下:DBCC __('置疑的同名数据库名')如果检测到错误,需要进行修复,但修复数据库需要在单用户模式下,请使用以下语句,ALTER __E 置疑的同名数据库名SET SINGLE_USER WITH __K __TEDBCC __ ('置疑的同名数据库名',REPAIR___)GOALTER __E 置疑的同名数据库名SET MULTI_USER WITH __K __TEGO如果还有错误,执行下面的语句DBCC __ ('数据库名',REPAIR_ALLOW_DATA_LOSS )-------(执行一次如果还有错误,可以多执行几次)7、有时通过DBCC __能够修复数据库中的错误,但有时不能修复,可能需要对单个有问题的数据表进行修复,需要使用DBCC __BLE('有问题的数据表名',REPAIR___) 命令,详细请看联机帮助8、DBCC __命令介绍检查指定数据库中的所有对象的分配和结构完整性。

SQL2000数据库置疑的恢复方法


1、将数据库设置为单用户迷失
sp_dboption '你的数据库名', 'single user', 'true'
2、修复表
DBCC CHECKTABLE('表名',repair_allow_data_loss)
3、取消单用户模式
sp_dboption '你的数据库名', 'single user', 'false'
二、重新启动SQL服务器 来自三、建立新数据库文件夹 如:newdat
四、复制空数据库到新建的数据库文件夹
五、在 sql 企业管理器中附加新数据库 如:newdat
六、用SQL的DTS工具将旧库数据全部导入新库
导入时注意:以pb打头的表不要选择导入
七、导入过程中,如发现某个表被损坏不能导入,可用下面的指令恢复后再导入
操作步骤:
一、打开查询分析器,修改被置疑的数据库为强制启动状态
选择 master 数据库,按以下指令顺序逐条执行
sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
update sysdatabases set status=-32768 Where name='被质疑的数据库名'

SQL数据库置疑解决方案(原因、预防、修复)附图

SQL数据库置疑解决方案一、数据库置疑产生的原因1、SQL Server所在分区空间是否够?数据库文件大小是否达到最大文件限制?FAT32的格式只支持4G以内的文件。

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

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

4、当SQL Server启动时,将会尝试获得对数据库文件的排他访问权,如果此时该文件被其他程序占用,或者遗失,数据库将会被标记为置疑。

5、电脑非法关机也会造成数据库置疑。

6、电脑磁盘有坏道有可能造成数据库置疑。

二、数据库置疑的预防1、数据库存放的盘符,空间是否够大,经常检查盘符的空间。

2、数据库存放的盘符的格式设置为NTFS格式。

3、进行病毒清除时,尽量把SQL服务停掉,再进行检查。

4、尽量减少非正常关机。

5、建议客户购买后备电源。

页脚内容16、给客户实施软件之后一定要做好自动备份。

7、建议客户每隔一定时间手动备份一次。

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

卸下数据库的命令:Sp_detach_db 数据库名连接数据库的命令:Sp_attach_db或者sp_attach_single_file_dbs_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′[,...16]sp_attach_single_file_db [@dbname =] ′dbname′, [@physname =] ′physical_name′使用此方法可以正确恢复SQL Sever7.0和SQL Server 2000的数据库文件,要点是备份的时候一定要将mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。

例子:假设数据库为pdm,其数据文件为pdm_data.mdf,日志文件为pdm_log.ldf。

SQL数据库置疑解决方法

SQL数据库置疑解决方法
一、SQL数据库置疑
1.数据库安全问题
为了保护数据库,需要确保数据库中的信息不被恶意攻击、篡改或盗窃,从而避免造成不可挽回的损失。

2.数据库可靠性问题
可靠性是指数据库系统必须在不同的时间片段可靠运行,即使是在发生系统故障的情况下,用户也能够一直获取服务。

只有数据库系统可靠性良好,才能够实现数据库系统的高安全性要求。

3.数据库性能问题
要满足用户的需求,必须保证数据库服务器能够达到最佳性能,避免出现数据库访问运行缓慢的问题,以及查询数据库时出现的查询延时、查询次数多等问题。

4.数据库维护问题
数据库系统是一个复杂的系统,在日常运行中难免会出现数据库系统故障、业务变更需求等情况。

数据库系统维护对于保证系统可靠性,提高系统性能至关重要。

1.数据库安全问题
(1)做好安全设置,为数据库设置正确的授权,只允许拥有访问权限的用户进行访问,并设置访问日志,记录访问和更改的用户,以及操作的时间等信息。

(2)定期备份数据库,将备份数据存放到安全的位置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档