数据库置疑的解决方法_msdb数据库置疑的解决方法

数据库置疑的解决方法_msdb数据库置疑的解决方法在没有数据库日志的情况下数据的恢复:由于误删的事务日志文件,导致数据库无法启动(置疑状态),数据无法取去,方法:新建一个同名数据库,把数据文件copy覆盖打开系统表的操作权限UseMasterGosp_configure’allowupdates’,1reconfigurewithoverrideGo设置成为紧急状态updatesysdatabasessetstatus=32…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺


在没有数据库日志的情况下数据的恢复:

由于误删的事务日志文件,导致数据库无法启动(置疑状态),数据无法取去,

方法:
新建一个同名数据库,把数据文件copy覆盖
打开系统表的操作权限
Use Master
Go
sp_configure ‘allow updates’, 1
reconfigure with override
Go
设置成为紧急状态
update sysdatabases set status = 32768 where name = ‘databaseName’
然后刷新一下数据库
变成了紧急状态
然后再
update sysdatabases set status =26 where name = ”databaseName”
然后刷新一个数据库
一般情况下就应该可以了。

http://www.itpub.net/showthread.php?s=&threadid=32011&highlight=%C8%D5%D6%BE%CE%C4%BC%

太兴奋了,我的数据终于找回来了

数据库被置疑的解决办法 一:         
 
在MS SQLSERVER中一直有这样的问题,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_BACKUP.DAT

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_DAT.MDF,DBNAME_LOG.LDF移走:

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

Zach的灵验脚本
Zach说他每次遇到这种数据库置疑情况,就运行下面这个脚本,屡试不爽:
======================================================
–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 master..sysdatabases 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
=====================================
该文章转载自网络大本营:
http://www.xrss.cn/Info/7753.Html

数据库被置疑的解决办法方法二:

SQL Server数据库多数据文件恢复技术
由于截断数据库日志或者其他需要,我们需要由单个数据文件中恢复数据库。下面的操作需要用sa的身份在SQL Server 查询分析器中登录,并一直假设我们要恢复的数据库是test,数据文件是C:\Program Files\Microsoft SQL Server\MSSQL\data\test_data.mdf。同时如果你需要截断日志文件,请在数据库脱机后将日志文件改名。

如果您的mdf文件是当前数据库产生的并且是单个数据日志的,那么一般情况下你可以很轻松的使用sp_attach_single_file_db恢复数据库,操作语句如下:
sp_attach_single_file_db @dbname = ’test’, @physname = ’C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf’
会出现类似下面的提示信息
设备激活错误。物理文件名 ’C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF’ 可能有误。
已创建名为 ’C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF’ 的新日志文件。
如果目的是截断日志,你可以将刚才改名的日志文件删除或者备份了。 

但是,如果您的数据库文件是从其他计算机上复制过来的或者有多个数据或日志文件,那么很不幸,上述办法多半行不通了。你也许会得到类似下面的错误信息
服务器: 消息 1813,级别 16,状态 2,行 1
未能打开新数据库 ’test’。CREATE DATABASE 将终止。
设备激活错误。物理文件名 ’C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF’ 可能有误。
我们需要用下面的操作来试着恢复(此操作具有很大的危险性,请确认在操作时您的数据库不在使用中)。
我们使用默认方式建立一个供恢复使用的数据库(如test)。如果是多数据文件的,请确认新建数据文件的名称及数目和要恢复的数据文件一致。日志文件就不必了; 
停掉数据库服务器; 
将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf; 
启动数据库服务器。此时会看到数据库test的状态为“置疑”; 
设置数据库允许直接操作系统表。在SQL Server 企业管理器里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中; 
设置test为紧急修复模式
update sysdatabases set status=-32768 where dbid=DB_ID(’test’)
此时可以在SQL Server 企业管理器里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表; 
下面重建数据库日志文件
dbcc rebuild_log(’test’,’C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf’)
执行过程中,如果遇到下列提示信息:
服务器: 消息 5030,级别 16,状态 1,行 1
未能排它地锁定数据库以执行该操作。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
说明其他程序正在使用该数据库,如果您正在使用SQL Server 企业管理器,那么关闭它。
正确执行完成的提示应该类似于:
警告: 数据库 ’test’ 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server 企业管理器里面会看到数据库的状态为“只供DBO使用”; 
验证数据库一致性(可省略)
dbcc checkdb(’test’)
在进行了多个验证后,最后的执行结果一般如下:
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 ’test’ 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系; 
设置数据库为正常状态
sp_dboption ’test’,’dbo use only’,’false’
如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦; 
最后一步,我们要将步骤5中设置的“允许对系统目录直接修改”一项恢复。在SQL Server 企业管理器里面选择数据库服务器,按右键,选择“属性”,取消在“服务器设置”页面中将“允许对系统目录直接修改”的选择。 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1425440

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171491.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java定时器之Timer使用与原理分析[通俗易懂]

    java定时器之Timer使用与原理分析[通俗易懂]Timer和TimerTaskTimer是jdk中提供的一个定时器工具,使用的时候会在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次。TimerTask是一个实现了Runnable接口的抽象类,代表一个可以被Timer执行的任务。【使用举例】【schedule(TimerTasktask,longdelay)延迟delay毫秒执行】…

    2022年7月7日
    20
  • 解决Eclipse中Preferences下没有Maven选项

    解决Eclipse中Preferences下没有Maven选项情景:      朋友学习Maven时,告诉我他的Preferences下面没有Maven选项,如下图。     既然我问,那我就得搞出来。教程:       Help—>install New software—>work with 中输入:http://download.eclipse.org/releases/indigo          红色部…

    2022年6月13日
    54
  • pip安装的包pycharm识别不了_手机上的python安装第三方库

    pip安装的包pycharm识别不了_手机上的python安装第三方库问题描述:在cmd控制台pipinstallpytest后并显示安装成功后,并且尝试用pycharm的python中importpytest,显示异常,提示我未安装过pytest解决方法方法一:在PyCharm下载第三方库(即把之前下的库作废,这里重新再下一次……)方法二:坚持用pip的方法安装第三方库方法1:无需命令,通过pycharm操作即可,找到“pytest”点击“install”安装即可(由于我已经安装)方法2:我们…

    2022年8月27日
    2
  • Cooley-Tukey算法 (蝶形算法)

    Cooley-Tukey算法 (蝶形算法)

    2021年12月2日
    66
  • 检测死链的工具[通俗易懂]

    检测死链的工具[通俗易懂]
    XenuLinkSleuth:一种很小很强大的检查网站死链接的工具
    在测试网站的过程中,常常需要检查网站里的所有链接是否正常,如果一个个去点击各个页面来测试,不仅让测试人员感到非常枯燥,也浪费时间。举例来说,如果一个门户网站,首页有100个链接,每个二级页面又有50个链接,那么这样简单一算就是5000次点击,一个测试人员每2秒检查一个页面,要花10000秒,约2.8个小时,还不能100%保证所有的页面都check到位,多少会有点担心:是不是有漏掉的。
    这里借用xenul

    2022年7月23日
    5
  • 判断完全二叉树

    判断完全二叉树完全二叉树的定义:一棵二叉树,除了最后一层之外都是完全填充的,并且最后一层的叶子结点都在左边。https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91/7773232?fr=aladdin百度定义 思路:层序遍历二叉树如果一个结点,左右孩子都不为空,则pop该节点,将其左右孩子入队列…

    2022年7月13日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号