如何在SQL Server 2005中修复损坏的数据库

如何在SQL Server 2005中修复损坏的数据库,第1张

1 在SQL Server Management Studio中随便创建一个数据,例如:PVLink。

2 停止SQL Server服务。

如果不停止此服务,刚才创建的PVLink数据库将即不能被拷贝,也不能被覆盖。

3 把已经损坏的数据库的mdf文件拷贝并覆盖刚才新建的数据库产生的mdf文件。

4 启动SQL Server服务。

此时可以看见刚才创建的PVLink数据库名字后面没有加号,无法察看其任何信息,其实目前它已经处于无法使用的状态。

5 把数据库设置为紧急状态。

通过在“查询分析器”中执行:alter database PVLink set EMERGENCY 可以将数据库设置为紧急状态,此时数据库PVLink的图标改变成粉红色并出现“紧急”字样。

6 将数据库设置为单用户模式。

如果不设置为单用户模式,我们将无法使用带有效repair选项的DBCC CHECKDB来检查/修复数据库,SQL Server 2005设置单用户模式比SQL Server 2000容易,只要在“查询分析器”中执行:

use master

go

sp_dboption 'PVLink',single,true

即可。

7 修复数据库

修复数据库主要使用DBCC来 *** 作,一般来讲,我们可以使用以下三个选项来修复:

REPAIR_ALLOW_ DATA_LOSS

尝试修复报告的所有错误。这些修复可能会导致一些数据丢失。

REPAIR_FAST

仅为保持向后兼容性而保留。

REPAIR_REBUILD

执行由 REPAIR_FAST 执行的所有修复,包括需要较长时间的修复(如重建索引)。执行这些修复时不会有丢失数据的危险。

一般我们通过执行:DBCC CHECKDB('PVLink',REPAIR_REBUILD) 即可完成修复工作,此时 SQL Server 2005会给出很多提示,因为这个过程可能会导致一些数据库设计或者数据的丢失,并且在这个过程中,会产生新的以ldf为扩展名的数据库日志文件。

8 完成以上的步骤后,一般情况下数据库应该可用了,如果数据库此时仍然是紧急状态,可以通过:alter database PVLink set ONLINE ,把数据库变成在线状态。

最近在网上看到破解版本的SQL SERVER 的数据库修复软件越来越多,在\x0d\闲时,下载了所有的试用版本及已经破解版本,找到以前保留的损坏MDF,进\x0d\行一番比较。断断续续经过几天的比较,这些软件的功能与特点基本上了解清楚,\x0d\写出来,与大家共享。\x0d\RecoveryToolboxForSQLServer(产地:俄国)\x0d\特点:数据恢复效果较好,对于库结构恢复较正常。\x0d\使用:直接选择损坏的MDF 文件,将修复结果直接输出到SQLSERVER 中。\x0d\或者保存成SQL 脚本文件。\x0d\SysTools SQL Recovery(产地不详)\x0d\特点:显示数据时,对中文不支持,只显示出UniCode,在运行时容易程度中\x0d\断直接退出;此软件有些像RecoveryToolboxForSQLServer\x0d\使用:直接选择损坏的MDF 文件,将修复结果直接输出到SQLSERVER 中。\x0d\或者保存成SQL 脚本文件。\x0d\officerecovery 中的 Recovery for SQL Server(产地:美国)\x0d\特点:支持BAK,LOG 文件,但修复后的数据容易丢失,库结构提较取较完整。\x0d\使用:直接选择损坏的MDF 文件,将修复结果直接输出到SQLSERVER 中。\x0d\或者保存成SQL 脚本文件。\x0d\Kernel for SQL Database(产地:印度)\x0d\特点:恢复效果好,但日期的显示,它是用国外的方式,库结构提取一般。\x0d\使用:直接选择损坏的MDF 文件,将修复结果直接输出到SQLSERVER 中。\x0d\或者保存成SQL 脚本文件。\x0d\Stellar Phoenix SQL Recovery (产地:印度)\x0d\特点:数据恢复效果较好,程序运行时易不正常退出,库结构提取不出来。\x0d\使用:直接选择损坏的MDF 文件,将修复结果直接输出到SQLSERVER 中。\x0d\无法保存成SQL 脚本。\x0d\上述软件都已经有破解版本或者免费版本,大家在选择时应该有所了解。\x0d\说明:库结构提取不完整,修复后的数据虽然可以在SQL SERVER 中附加,查\x0d\看,导出,备份,但在应用软件下是无法连接此数据库的,经过对上述软件修复后的数据库文件进行研究,已经找到解决MDF 文件加软件的办法,有此修复需

go 5 shutdown 数据库服务器 6 用ultraedit编辑数据库文件test_datamdf,随便修改点字节内容,相当于数据库遭到致命的损坏。 7 启动数据库,并且运行企业管理器,点开数据库,看到test变成灰色,而且显示置疑。 8 运行isql -SLocalhost -Usa -P 1> backup log test TO DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKUP est_2bak' WITH NO_TRUNCATE 2>go 已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。 BACKUP LOG *** 作成功地处理了 2 页,花费了 0111 秒(0087 MB/秒)。 9 进行恢复最老的完全备份 1> RESTORE DATABASE test FROM DISK='D:Program FilesMicrosoft SQL ServerMSSQL BACKUP est_1bak' WITH NORECOVERY 2> go 已处理 96 页,这些页属于数据库 'test' 的文件 'TEST_Data'(位于文件 1 上)。 已处理 1 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。 RESTORE DATABASE *** 作成功地处理了 97 页,花费了 0107 秒(7368 MB/秒)。 10 恢复最近的日志 1> RESTORE LOG test FROM DISK='D:Program FilesMicrosoft SQL ServerMSSQLBACKU P est_2bak' WITH RECOVERY 2> go 已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。 RESTORE LOG *** 作成功地处理了 2 页,花费了 0056 秒(0173 MB/秒)。 数据已经完全恢复了,可以使用了。

在重装数据库或重装系统之前,你需要先把你要在以后恢复的数据做好备份,就是从数据库中导出数据文件到另外1个地方暂时的保存起来。重装完系统活着数据库以后再把原来备份好的东西导入到sql数据库中去就好了。导出数据库数据:打开你sql数据库的企业管理器,找到你要导出数据的数据库名称,选中它,也就是在它的数据库名字上鼠标点1下,然后打开菜单: *** 作--所以任务--导出数据,这是会d出“DTS导入导出向导”,依照它的提示,1步1步 *** 作下去,就能够把你数据库里的数据导出去了,导完1个数据库以后可以再导另外一个的,1个1个来。将数据导入至sql数据库:用鼠标点1下“数据库”3个字,也就是你的“(local)(WindowsNT)”下的第1级数据库,然后打开菜单: *** 作--所有任务--附加数据库,此时d出附加数据库对话框,选择要附加数据库的MDF文件,点1下后面的3个点的那个按钮就能够找,找到你先前导出的数据库文件,肯定,根据它的提示完成相应项目,就能够导入了。

在网上搜索了一下,发现了一篇介绍比较详细的,而且也确实解决了这一问题(我在VM上测试过可以),特将其全文转贴如下:

关于系统数据库的恢复总结如下:

在SQL Server数据库中,系统信息存储在系统数据库中,主要的系统数据库包括:

master-从整体上控制用户数据库和SQL Server *** 作,在创建了任何用户定义的对象后,都要备份它

model-为新数据库提供模版和原型

msdb-包含了有关作业、报警及 *** 作员等信息

如果包含系统数据库的介质变了,那么必须重建系统数据库,如果你仍然可以启动SQL Server服务,则可以通过RESTORE语句从系统数据库的备份中恢复数据库。

如果master坏了,不能启动系统,可以按照下面步骤进行恢复

1重建系统数据库 运行c:/mssql7/binn/rebuildmexe,按照提示进行即可,

过程中需要系统数据库样本的路径,可在安装光盘中找到;

2 重建系统数据库后,启动SQL Server服务,用系统数据库的备份恢复数据库

就行了通常恢复顺序为master->msdb->model

在恢复master的备份时要注意:必须在单用户(single user)模式下进行

a进入单用户模式的方法:

1在命令行模式下输入sqlservr -c -f -m或者输入sqlservr -m

其中:-c 可以缩短启动时间,SQL Server 不作为Windows NT的服务启动

-f 用最小配置启动SQL Server

-m 单用户模式启动SQL Server

2可以在控制面板-服务-MSSQLServer的启动参数中输入-c -f -m或者输入-m,点击开始

3进行master数据库的恢复

a直接进入查询分析器,有个提示不要理会它

输入恢复语句进行数据库恢复:

RESTORE DATABASE master from disk='c:/具体的备份文件名'

b或者用这个,在命令提示符下输入,注意大小写

使用"windows身份验证"的,输入:isql /E

使用"sql server和windows身份验证"的,输入:isql /U"用户名" /P"密码"

然后在出现的提示符下输入(注意1>,2>是提示符):

我们下载一款数据库恢复软件

2

双击打开安装这个软件

3

选择我同意,但记下一步

4

适当改一下文件安装路径

单击下一步

5

单击下一步,其他不用管

6

选中那个创建快捷方式,单击下一步

7

单击安装

8

安装完成之后

双击快捷方式

运行这个软件

9

单击打开数据库文件

选中要打开的文件

单击打开

10

选择版本

单击确定

11

这就是打开后的界面

12

选中要恢复的文件

单击导出所有表数据

--1、修改数据库为紧急模式ALTER DATABASE Stock SET EMERGENCY--2、使数据库变为单用户模式ALTER DATABASE Stock SET SINGLE_USER --3、修复数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象错误。当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修复报告的错误。但是,这些修复可能会导致一些数据丢失。DBCC CheckDB (Stock, REPAIR_ALLOW_DATA_LOSS)--4、使数据库变回为多用户模式ALTER DATABASE Stock SET MULTI_USER1:重新建立一个,一样的数据库,路径名称,文件都一样哈;2:关掉SQLSERVER服务;3:把源文件COPY过来;4:开启SQLSERVER服务;5:执行上面的1到4步。OK

以上就是关于如何在SQL Server 2005中修复损坏的数据库全部的内容,包括:如何在SQL Server 2005中修复损坏的数据库、国外的几种SQL SERVER数据库,修复软件技术特点及使用办法是什么、SQL Server 2000数据库文件损坏时如何恢复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9359459.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存