
SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:
1 至少有一个误删除之前的数据库完全备份。
2 数据库的恢复模式(Recovery mode)是“完整(Full)”。
针对这两个前提条件,会有三种情况:
情况一、如果这两个前提条件都存在,通过SQL语句只需三步就能恢复(参考文章),无需借助第三方工具。
a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份文件名' WITH NORECOVERY
b) 恢复一个误删除之前的完全备份:RESTORE DATABASE [数据库名] FROM DISK = N'完全备份文件名' WITH NORECOVERY, REPLACE
c) 将数据库恢复至误删除之前的时间点:RESTORE LOG [数据库] FROM DISK = N'第一步的日志备份文件名' WITH STOPAT = N'误删除之前的时间点' , RECOVERY
情况二、如果第1个前提条件不存在,第2个前提条件存在,需要借助第三方工具。
情况三、如果第2个前提条件不存在,无法恢复。所以,一定要将数据库恢复模式设置为“完整(Full)”。
我现在面临的是第二种情况,需要找第三方工具。
开始找的是Log Explorer for SQL Server,不支持SQL Server 2008。
后来找的是SQL Log Rescue,也不支持SQL Server 2008。
接着找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要购买,Demo版并没有数据恢复功能。
最终在officerecoverycom上找到Recovery for SQL Server,虽然也是商业软件,需要购买,但Demo版可以恢复数据,只要数据库文件不超过24Gb。幸好朋友的数据库文件不大,用它完成了误删除数据的恢复。
下面分享一下用Recovery for SQL Server进行恢复的 *** 作步骤:
1 运行Recovery for SQL Server
2 点击菜单中的 File > Recover,选择要恢复的数据库的数据文件(mdf)
3 Next > Next,进入 Recovery Configuration 界面,选择Custom(选择了Custom才可以选择从日志中恢复误删除的数据)。
4 Next 进入 Recovery options 窗口,选中 Search for deleted records,并选择要恢复的数据库的日志文件路径(log file path)。
5 Next 并选择目标文件夹(Destination folder),用于存放恢复过程中生成的SQL语句与bat文件。
6 点击Start,开始恢复 *** 作(在上一步选择的目标文件夹中生成相应的SQL文件与Bat文件),然后,出现 SQL Server Database Creation Utility 窗口。
7 Next,选择被恢复数据存放的目标数据库。
8 Next, 选择 Import availiable data from both database and log files
9 Next, Next, 然后就完成数据的恢复!
1、把mdf文件和ldf文件拷贝到数据库的默认路径C:\Program
Files\Microsoft
SQL
Server\MSSQL10MSSQLSERVER\MSSQL\DATA里;
2、在sqlserver里新建个查询,执行下面代码;
1
USE
master;
2
GO
3
CREATE
DATABASE
NewFile
4
ON
(FILENAME
=
'C:\Program
Files\Microsoft
SQL
Server\MSSQL10MSSQLSERVER\MSSQL\DATA\Filemdf'),
5
(FILENAME
=
'C:\Program
Files\Microsoft
SQL
Server\MSSQL10MSSQLSERVER\MSSQL\DATA\File_logldf')
6
FOR
ATTACH;
7
GO
3、刷新数据库,就出现了新的数据库NewFile;
根据mdf文件和ldf文件还原成功,就这么简单。我用的是sqlserver2008
给你一个我日常维护数据库的方法吧。
SQL Server 2000数据库LDF损坏,只有mdf的恢复方法。
SQL Server 2000数据库文件遭到破坏的现象经常出现,数据库出错是否可以修复呢?答案是可以的,本日志以一个sql server 2000数据库,数据库日志文件ldf损坏了,mdf正常,数据库附加失败的修复方法总结一下,数据库数据恢复在很多时候比较复杂,当数据库存在大量错误的时候,使用DBCC修复也是不可以的,需要拆解数据库来抢救重要的数据,下面是较为常见的一种SQL Server 2000数据库修复方式:
1) 先及时把原来的数据库文件(如testmdf)备份到其他地方。
2) 停掉服务器。
3) 删除这个testmdf。
4) 重新建立一个test同名数据库。
5) 删除这个新建立的test数据库的testldf文件,并用开始备份好testmdf文件覆盖这个新建立的testmdf文件。
6) 启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何 *** 作。
设置数据库允许直接 *** 作系统表。此 *** 作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”。
7) 设置test为紧急修复模式
update sysdatabases set status=-32768 where dbid=DB_ID('test')
此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表
8) 下面执行真正的恢复 *** 作,重建数据库日志文件
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_logldf')
执行过程中,如果遇到下列提示信息:
服务器: 消息 5030,级别 16,状态 1,行 1
未能排它地锁定数据库以执行该 *** 作。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
说明您的其他程序正在使用该数据库,如果刚才您在 *** 作中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
正确执行完成的提示应该类似于:
警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
9) 验证数据库一致性
dbcc checkdb('test')
10设置数据库为正常状态
sp_dboption 'test','dbo use only','false'
如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
11)最后一步,我们要将步骤6中设置的“允许对系统目录直接修改”一项恢复;
以在某个文件夹下,新建一个账套,会产生两个文件,也就是你说的mdf数据文件、ldf日志文件,将数据库的服务停止掉,然后将你这两个文件替换掉新的这个文件,再启动数据库服务,打开软件,这样账套就恢复了;
如果两个文件都没有损坏,那么很容易恢复,直接调用以下命令就可以了:
sp_attach_db "数据库名" "路径\mylogldf" "路径\mydatamdf"
如果文件损坏了,那么调用上面的命令时会出错,这时最好把文件备份一下,然后找专业的数据公司,比如杭州数灵网络科技开发有限公司,来做数据恢复。
希望有帮助。
*** 作方式一:
·将这两个文件复制到\\用友T1-商贸宝批发零售版\\服务器\\data下。(这些文件存放在\"原软件安装路径\\用友T1-商贸宝批发零售版\\服务器\\data\"下)
·进入windows *** 作系统的开始->程序->Microsoft
SQL
Server->查询分析器中,在d出\"连接到SQL
Server\"窗口中输入密码(此项安装SQL数据库时输入的密码,如当时未输入密码,在此也无需输入),点击\"确认\"后,在出现的可输入的空白窗口处,录入如下内容:
exec
sp_attach_db\'新建的数据库名称\',\'mdf文件在本机的存放路径\',\'ldf文件在本机的存放路径\'
例如:exec
sp_attach_db\'dbname\',\'c:\\用友T1-商贸宝批发零售版\\服务器\\data\\mdf\',\'c:\\用友T1-商贸宝批发零售版\\服务器\\data\\ldf\'
请严格按照此格式进行书写,输入完成后点击窗口工具栏中的绿色三角形按钮或点击键盘按键\"F5\"运行,如现成功提示后,完成此项 *** 作。
·进入windows *** 作系统的开始->程序->Microsoft
SQL
Server->企业管理器,点击控制台根目录下的\"+\"号,直到看到一个名为\"数据库\"文件夹,再次点击\"数据库\"左边的\"+\"号,找到\"master\"数据库,点击master旁边的\"+\"号,找到其下级目录\"表\",点击\"表\"后,在右边的窗口中出现很多数据表文件,找到名为\"sub_list\"的文件,右键单击此项,在d出的菜单中选中\"打开表->返回所有行\",此时出现一个表格,在dbname中输入你的数据库名,在ZTname中输入你的账套名,flgver对应列输入版本信息,然后点击上面工具栏中的感叹号\"!\",退出完成数据恢复 *** 作。
*** 作方式二:
·将这两个文件从\"软件安装路径\\用友T1-商贸宝批发零售版\\服务器\\data\"剪切拷贝到其它目录下。
·进入软件中,创建一个新账套,数据库名称为mdf的文件名相同。例如文件为fzbmdf,则创建的新账套的账套名称可以任意取,但数据库名称必须是fzb,此时在\"软件安装路径\\用友T1-商贸宝批发零售版\\服务器\\data\"会生成两个新文件fzbmdf和fzbldf。
·将原来拷贝到其它路径下的mdf文件和ldf文件拷回到\"软件安装路径\\用友T1-商贸宝批发零售版\\服务器\\data\"覆盖新建账套生成的同名文件,完成数据恢复 *** 作。
注意:客户安装数据库文件为MSDE2000可采用方式二进行处理,但不能采用方式一进行数据恢复。
第一步:新建数据库,命名为你想要的数据库名;
第二步:在新建的数据库中点击右键-->所有任务-->还原数据库,选择从设备,然后找到你已有的bak文件。
这样就可以了
以上就是关于sqlserver数据库删除了,怎么还原全部的内容,包括:sqlserver数据库删除了,怎么还原、mdfview怎么恢复数据库数据、SQL2000我只有MDF数据,没有LOG日志,怎么还原数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)