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数据库文件损坏时如何恢复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)