ais文件还原到mysql_SQLSERVER 数据库可疑的解决步骤

异常关机后,金蝶帐套突然无法访问,发现数据库置疑,使用此方案解决:

注意:在做任何修复操作之前,请务必备份.mdf/.ndf以及.ldf文件。

一般情况下这样可以解决:

1、将数据库设置为应急状态

ALTER DATABASE AIS20150723104254 SET emergency

2、将数据库设置为单用户模式

ALTER DATABASE AIS20150723104254 SET SINGLE_USER

3、对数据库进行检查修复

DBCC CheckDB (AIS20150723104254, REPAIR_ALLOW_DATA_LOSS)

REPAIR_ALLOW_DATA_LOSS代表,若此错误不能修复时,系统将直接删除相关数据。

DBCC  checkdb (AIS20150723104254, REPAIR_REBUILD)

尝试直接修复数据库错误

使用上面两个语句进行数据库检查修复,如果返回结果中没有了红色的提示文字,说明修复成功

此数据库执行CHECKDB的过程中发现一些表的索引被破坏,于是针对具体的表进行重建索引的操作:

DBCC DBREINDEX(表名)

完成后可以运行dbcc checkdb(db_name)检查数据库的完整性.

4、最后,取消单用户模式即可。

exec sp_dboption AIS20150723104254, N'single', N'false'

ALTER DATABASE AIS20151130094910 SET MULTI_USER

日志文件损坏或丢失时,可以尝试此方法:

方法一:

先停止数据库服务,备份数据文件(MDF/LDF):

A. 我们使用默认方式建立一个供恢复使用的数据库(如AIS20131106110002)。可以在SSQL Server Management Studio里面建立。

B. 停掉数据库服务器。

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

D. 启动数据库服务器。此时会看到数据库AIS20131106110002的状态为“置疑”。这时候不能对此数据库进行任何操作。

E. 设置数据库允许直接操作系统表。此操作可以在SQL Server Management Studio里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如

下语句来实现。

use   master

go

sp_configure 'allow updates',1

go

reconfigure with override

go

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

alter database AIS20131106110002 set emergency

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

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

dbcc   rebuild_log( 'AIS20131106110002 ', 'D:\MSSQL2008\Data\AIS20131106110002_log.ldf ')

SQL 2012版本以后版本时:

alter database AIS20131106110002 Rebuild Log on (name=AIS20131106110002_log,filename='D:\MSSQL2008\AIS20131106110002_log.ldf')

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

服务器:   消息   5030,级别   16,状态   1,行   1

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

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

打开单用户模式即可

ALTER DATABASE AIS20131106110002 SET SINGLE_USER

alter database AIS20131106110002 set SINGLE_USER with ROLLBACK IMMEDIATE

警告:   数据库   'AIS20131106110002 '   的日志已重建。已失去事务的一致性。应运行   DBCC   CHECKDB   以验证物理一致性。

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

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

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

dbcc   checkdb( 'AIS20131106110002 ')

一般执行结果如下:

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

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

如果发现出问题,可使用下面方法尝试修复:

一、

dbcc checkdb(AIS20131106110002,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(AIS20131106110002,REPAIR_REBUILD)

二、

使用Repair_Allow_Data_Loss选项修复数据库。

优点: 可能可以恢复尽量多的数据

缺点:

a)  不一定能够将全部错误修复,还有可能越修越多。同时,需要大量时间,需要经过多次执行修复命令.十几次,甚至数十次.修复时间不能预估.

b)  就算我们将所有错误修复,我们也不能保证数据在应用程序逻辑这一层次上的数据正确性,您需要找您的应用程序提供商来检查数据在程序逻辑层次是否正确。

dbcc checkdb (‘’, REPAIR_ALLOW_DATA_LOSS) go

—此命令可能需要运行多次,才能完全修复。

三、

通过BCP,DTS,select into等方式将好的表,或者表中好的数据导出来。建议使用BCP的方法,这样可以最大限度的回复数据.BCP会停在出错的纪录上,但是前面的数据就能成功导出.使用DTS或Select into的话, 我们很难判断最大限度能导出的记录数.

优点:导出来的数据保证在应用程序逻辑这一层次的正确性

缺点:不会修复数据库中存在的错误,丢失的数据量会比较大,取决于第7步的运行结果。

二和三摘自:

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

exec sp_dboption AIS20131106110002, N'single', N'false'

ALTER DATABASE AIS20131106110002 SET MULTI_USER

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

J. 最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Management Studio里面恢复,也可以使用如下语句完

use master

go

sp_configure 'allow updates',0

go

reconfigure with override

go

注意,SQL2012后,系统无sp_dboption这个存储过程,可以用附件文本的方式,在MASTER中创建此存储过程即可。

方法二:

1、把问题数据库文件备份到其它目录

停掉SQLSERVER服务,把服务器上出问题的数据库, 假设名称为 ErrorDB的数据库文件及日志文件备份复制到其他目录,然后直接将其删除,把其数据库文件及日志文件也删除

2、新建同名数据库

启动SQLSERVER服务,新建同名数据库ErrorDB,文件目录和文件名和原来一致

3、用备份的数据库文件替换新的数据库文件

停掉SQLSERVER服务,把备份的数据库文件替换新的数据库文件(只替换数据库文件,不替换日志文件)

启动SQLSERVER服务,打开数据库,这时数据库应该是不能访问的

-------------------设置应急模式、单用户模式、检查修复数据,取消单用户模式----------------------

4、将数据库设置为应急状态

alter database ErrorDB set emergency

执行后,为了保险起见,重新停止、开启的SQLSERVER服务

再打开数据库,已经可以看到里面的内容了,如表,视图,存储过程等

数据库名称后有紧急标志,能看到数据库结构,但无法进行备份等操作

5、将数据库设置为单用户模式

ALTER DATABASE ErrorDB SET SINGLE_USER

6、对数据库进行检查修复

dbcc checkdb(ErrorDB,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(ErrorDB,REPAIR_REBUILD)

操作后,仍然停止启动SQLSERVER服务(不确定是否需要,我只是为了想无干扰查看执行后的数据库状况)

7、取消单用户模式即可

exec sp_dboption ErrorDB, N'single', N'false'

ALTER DATABASE ErrorDB SET MULTI_USER

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(DFS)n皇后问题

Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。 你的任务是,对于给定的N,求出有多少种合法的放置…

(DFS)棋盘问题(poj1321)

题目: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆…

(BFS)Catch That Cow(poj3278)

题目&#xff1a; 农夫知道一头牛的位置&#xff0c;想要抓住它。农夫和牛都于数轴上 &#xff0c;农夫起始位于点 N(0<N<100000) &#xff0c;牛位于点 K(0<K<100000) 。农夫有两种移动方式&#xff1a; 1、从 X移动到 X-1或X1 &#xff0c;每次移动花费一分钟 2…

java jmx 监控_只用五分钟为系统实现基于JMX的监控

早期是作为J2EE的一部分, 因此总给人一种开发起来会很"重"的感觉, 这让不少Java程序员宁愿选择自行实现"轻量级"方案. 时至今日, 借助一些优秀的开源项目, JMX 也可以用起来很"轻".pojo-mbean 使用Annotation对MBean进行声明, 省去不少 JMX规范中…

(DFS or BFS)Find The Multiple(poj1426)

题目&#xff1a; 给定一个正整数n&#xff0c;请编写一个程序来寻找n的一个非零的倍数m&#xff0c;这个m应当在十进制表示时每一位上只包含0或者1。你可以假定n不大于200且m不多于100位。 提示&#xff1a;本题采用Special Judge&#xff0c;你无需输出所有符合条件的m&…

wsld2java axis_Weblogic+axis2安装

Weblogicaxis2安装实验环境系统版本使用到软件软件版本Redhat 6.3Ld-linux.so.2Ld-linux.so.2 安装的weblogic的需要安装(系统自带)Weblogic10.3Axis21.41在以下实验中我使用的是1.41的war包 &#xff0c;下载war包的话可以在weblogic中进行部署。实验步骤&#xff1a;启动webl…

java stl分解_[STL训练]寻梦-题解(Java代码)极简思路

注意事项: insert()方法只能被 StringBuffer 类的对象调用参考代码:import java.util.Scanner;public class Main {private static int n 0;public static void main(String[] args) {Scanner scanner new Scanner(System.in);n scanner.nextInt();int m n * 2;for (int i…

(BFS)Prime Path (poj3126)

题目&#xff1a; 孤单的zydsg又一次孤单的度过了520&#xff0c;不过下一次不会再这样了。zydsg要做些改变&#xff0c;他想去和素数小姐姐约会。 所有的路口都被标号为了一个4位素数&#xff0c;zydsg现在的位置和素数小姐姐的家也是这样&#xff0c;如果两个路口间只差1个数…

java图片资源存放_Java编程中图片文件放哪

举个例子&#xff1a;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;/*按扭类*/classBombextendsJButton{publicintnum_x,num_y;//第几号方块publicintBombRoundCount;//周围雷数...举个例子&#xff1a;import java.awt.*;import java.awt.event.*;import jav…

(BFS)Dungeon Master(poj2251)

题目&#xff1a; 你被困在一个3D地牢中且继续寻找最短路径逃生&#xff01;地牢由立方体单位构成&#xff0c;立方体中不定会充满岩石。向上下前后左右移动一个单位需要一分钟。你不能对角线移动并且迷宫四周坚石环绕。 是否存在逃出生天的可能性&#xff1f;如果存在&#…

java流读写_java流概述以及文件读写示例

1. 先分清楚是字节流还是字符流。字节流&#xff1a;InputStream OutputStream字符流&#xff1a;Reader Writer字符流与字节流的区别是读取的单位长度不同&#xff0c;字节流读8字节&#xff0c;字符流读16字节&#xff0c;所以有中文时&#xff0c;就得用字符流。2. 在字节/字…

(DFS+DP)滑雪(poj1088)

题目 Michael喜欢滑雪百这并不奇怪&#xff0c; 因为滑雪的确很刺激。可是为了获得速度&#xff0c;滑的区域必须向下倾斜&#xff0c;而且当你滑到坡底&#xff0c;你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数…

(BFS)Meteor Shower (poj3669)

题目&#xff1a; Bessie听说有场史无前例的流星雨即将来临&#xff1b;有谶言&#xff1a;陨星将落&#xff0c;徒留灰烬。为保生机&#xff0c;她誓将找寻安全之所&#xff08;永避星坠之地&#xff09;。目前她正在平面坐标系的原点放牧&#xff0c;打算在群星断其生路前转…

java的整型_java 整型

byte(1字节)、short(2字节)、int(4字节)、long(16字节)java中前缀加上0b或者0b就可以写二进制数&#xff0c;前缀加上0就可以写八进制数&#xff0c;前缀加上0x或者0x就可以写十六进制数一个字节是8位&#xff0c;最高位是符号位&#xff0c;最高位为0则是正数。最高位为1则是负…

(二分+区间搜索 )Mountain Walking(poj2110/poj2922)

题目 农夫约翰和贝西牛已经开始了其中一个“积极”的假期。他们整天都在山里散步&#xff0c;然后在一天结束时&#xff0c;他们厌倦了回到度假小屋。 由于攀爬需要大量能量并且已经疲惫&#xff0c;他们希望使用其最高和最低高度之间的差异最小的路径返回到机舱&#xff0c;…

python自动化操作应用程序错误_web自动化中踩过的低级错误坑(python+selenium)

1.定位了元素没有做下一步操作&#xff0c;比如&#xff0c;点击、输入等功能&#xff0c;而报错&#xff0c;报错信息如下&#xff1a;2.上传图片时&#xff0c;定位元素&#xff0c;应该定位input标签&#xff0c;点击页面input标签肉眼没有看到定位到任何元素&#xff0c;以…

(全排列)Smallest Difference (poj2718)

题目&#xff1a; Description - 题目描述 给定若干位十进制数&#xff0c;你可以通过选择一个非空子集并以某种顺序构建一个数。剩余元素可以用相同规则构建第二个数。除非构造的数恰好为0&#xff0c;否则不能以0打头。 举例来说&#xff0c;给定数字0&#xff0c;1&#x…

qgis折点打断_arcgis在折点处打断并建立网络分析(最短路径等问题)

目的&#xff1a;GIS网络分析用于对段路径等问题。这里仅仅讲述如何建立网络分析。网络建立前必须满足以下条件1.要素文件在节点处打断(本文下面会叙述)2.要素文件在地理数据库里的数据集里(一般是这样)3.要素文件包含的数据集里已经验证拓扑&#xff0c;并确保没有错误(可选)注…

(bfs)连连看(hdu1175)

题目&#xff1a; “连连看”相信很多人都玩过。没玩过也没关系&#xff0c;下面我给大家介绍一下游戏规则&#xff1a;在一个棋盘中&#xff0c;放了很多的棋子。如果某两个相同的棋子&#xff0c;可以通过一条线连起来&#xff08;这条线不能经过其它棋子&#xff09;&#…

base64 java php_利用PHP将图片转换成base64编码的实现方法

先来说一下为什么我们要对图片base64编码base64是当前网络上最为常见的传输8Bit字节代码的编码方式其中之一。base64主要不是加密&#xff0c;它主要的用途是把某些二进制数转成普通字符用于网络传输。由于这些二进制字符在传输协议中属于控制字符&#xff0c;不能直接传送&…