SqlServer数据库置疑的解决办法
导读:
/*--重置置疑状态
1.系统方法:
如果 sql server 因为磁盘驱动器不再有可用空间,而不能完成数据库的恢复,
那么 microsoft® sql server™ 2000 会返回错误 1105
并且将 sysdatabases 中的 status 列设为置疑。按下面的步骤解决这个问题:
执行 sp_resetstatus。
语法为:
sp_resetstatus '数据库名'
用 alter database 向数据库添加一个数据文件或日志文件。
停止并重新启动 sql server。
用新的数据文件或日志文件所提供的额外空间,sql server 应该能完成数据库的恢复。
释放磁盘空间并且重新运行恢复操作。
sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。
--*/
--2.手工重置置疑状态
use master
go
sp_configure 'allow updates',1 reconfigure with override
go
declare @dbname varchar(30)
set @dbname='你要处理的数据库名'
if @@trancount >0
print '正在进行事务处理,操作不能进行'
else if suser_id()!=1
print '你不是系统管理员(sa),不能进行此操作'
else if not exists(select 1 from master..sysdatabases where name=@dbname)
print '你要操作的数据库不存在'
else if not exists(select 1 from master..sysdatabases where name= @dbname and status &256 = 256)
print '你的数据库没有被置疑'
else
begin
begin tran
update master..sysdatabases set status = status ^ 256 where name = @dbname
if @@error != 0 or @@rowcount != 1
rollback tran
else
begin
commit tran
print '操作成功,请重新启动SQL'
end
end
go
sp_configure 'allow updates', 1 reconfigure with override
go
--------------------------
如果上面的方法不能解决问题.
就有点麻烦,首先分离你的数据库,备份数据文件
如果不能分离,则停止SQL服务,再备份数据文件,然后启动SQL服务,删除置疑的数据库
接下来按下面的步骤处理:
1.新建一个同名的数据库
2.再停掉sql server(注意不要分离数据库)
3.用原数据库的数据文件覆盖掉这个新建的数据库
4.再重启sql server
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
数据库的脚本创建一个新的数据库,并将数据导进去就行了.
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', 'false'
Go
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=42006
还有一种方法:
随便记录---------
A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
B.停掉数据库服务器。
C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.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')
一般执行结果如下:
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
SqlServer数据库置疑的解决办法相关推荐
- 转贴 :sql数据库置疑:Sql Server数据库置疑的解决
sql数据库置疑:Sql Server数据库置疑的解决 办法 原因: 通常这个问题是由于硬盘空间不够或硬盘读写错误造成的. 现象: 数据库后面有"置疑"字样,查看系统事务日记出现以 ...
- restore还原不同名称的数据库_Sql Server 备份还原失败错误ERROR:3145(备份集中的数据库备份与现有的数据库不同)及解决办法...
一.前言 SQL Server 备份和还原全攻略,里面包括了通过SSMS操作还原各种备份文件的图形指导,SQL Server 数据库最小宕机迁移方案,里面使用SQL脚本(T-SQL)完成完全备份.差异 ...
- ORA-01109:数据库未打开 解决办法
ORA-01109:数据库未打开 解决办法 直接上办法 先来张操作截图 具体操作步骤 问题解读 直接上办法 先来张操作截图 具体操作步骤 1.打开sqlplus.exe 2.请输入用户名: 用户名 a ...
- DreamMail无法打开邮件数据库问题的解决办法
DreamMail无法打开邮件数据库问题的解决办法 (http://blog.csdn.net/kingspider/) DreamMail(http://www.dreammail.org/)是一个 ...
- mysql附加数据库出错_Sqlserver2005附加数据库时出错解决办法
一篇关于Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法 ,有碰过相同问题的朋友可以参考本文章得以解决哦. 最近几天从网上找了几个.net的登录案例想要研 ...
- mysql远程无法登陆_无法远程登陆MySQL数据库几种解决办法
无法远程登入MySQL数据库的解决办法一: 尝试用MySQL Adminstrator GUI Tool登入MySQL Server,Server却回复错误讯息:Host '60-248-32-13. ...
- win10远程桌面连接报错(出现身份验证错误。要求的函数不受支持。CredSSP 加密数据库修正)解决办法
某天使用win10系统进行远程桌面连接时,出现了连接失败的情况,提示: 出现身份验证错误. 要求的函数不受支持 这可能是由于 CredSSP 加密数据库修正. 多次重试,问题依旧,而以往是可以正常进行 ...
- 连接阿里云服务器上MySQL数据库失败的解决办法
一 数据库配置,MySQL默认是不能远程连接 只需要在/etc/mysql下的my.cnf文件里注释掉bind-address = 127.0.0.1 就可以了,如图: 二 安全组设置 阿里云服务器默 ...
- manjaro同步数据库报错解决办法
开机同步数据库,终端输入命令sudo pacman -Syyu 同步失败,报错如下: :: 正在同步软件包数据库... 错误:无法升级 core (无法锁定数据库) 错误:无法升级 extra (无法 ...
最新文章
- java加密解密与数字证书的操作
- Javaweb异常提示信息统一处理
- 计算机网络第六版 重点,计算机网络第六版重点习题及答案.docx
- [一维粒子模拟 version3.6]renormalization
- maya中英文切换插件_老司机都在用的30款maya常用插件
- 【按位dp】文盲的学习方法
- 给指定Python版本安装指定版本库的办法
- 感恩节专宠有礼,送3本技术好书
- C#中获去一个字符串中的汉字的个数 C#获取字符串全角的个数
- Xcode 7.3 解决自定义类无法自动联想
- 001.Spark的日志配置
- Flutter ListView以及GridView的列表展示与Item点击事件
- 软件评测师教程书本对软考的作用有多大?
- 74系列芯片功能说明
- 项目经理一定要知道的PMP项目管理八大会议流程-(PMBOK高频考点)
- 支付宝SOFA架构:降低业务系统复杂度
- 设置Chrome浏览器不加载图片的方法
- AndroidStudio与Eclipse快捷键
- 虚拟机克隆之后的IP修改问题
- Debian 国内常用镜像源
热门文章
- 初识人脸识别---人脸识别研究报告(概述篇)
- 详解|一级建造师考试报名流程有哪些?
- Android ListView局部刷新item
- 恶意还是粗心?质疑MyIE(版本号2.0.2.2961)的升级程序
- 主流webservice框架整理
- Ubuntu 20.04安装wps程序步骤,史上最简洁实用
- 7位世界著名的制图师及其相关的地图介绍
- 对于代码复现学习的一些理解||计算机研究生学习笔记||经验分享||深度学习||pytorch||不定期长期更新
- JS获取浏览器可视区域宽高
- html仿写京东左侧,jQuery模仿京东/天猫商品左侧分类导航菜单效果