我们重要的数据是存放在MDF文件中的,如果LDF文件丢失,MDF文件没有丢失,那么数据也可以还原。如果LDF文件没有丢失,MDF文件丢失,且LDF文件是完整的,也是可以提供一定手段还原数据。
现象描述
我们现在要面对的问题是,针对wtlog_2008_m12这个数据库,只有MDF文件而LDF文件丢失了,SQL Server Management Studio中也没有这个数据库,附加上也会提示错误。
解决方法
(1)在SQL Server Management Studio删除状态为Recovery Pending的(即丢失了LDF的)问题数据库(如果有的话,应该是在数据库管理中没有的)
(2)重命名老的MDF文件. 比如改为wtlog_2008_m12_bak.mdf
(3) 重建一个新的数据库, 名字跟丢失的数据库完全一样,比如为wtlog_2008_m12,LDF文件的名字如果为wtlog_2008_m12的话,数据库提示报错,说逻辑名字已存在,但文件怎么也找不到,此处的LDF的文件命名为wtlog_2008_m12_log。 注意, 新的MDF的位置跟我们老的MDF的文件的位置相同. 这里的LDF文件的位置选在你想要存放的最终位置上(这个就是你所要的被恢复的LDF文件了).
(4)关闭SQL Server服务,将新的MDF(wtlog_2008_m12.mdf)重命名掉(比如改为wtlog_2008_m12___.mdf), 老的MDF(wtlog_2008_m12_bak.mdf)命名回原来的名字(wtlog_2008_m12.mdf).
(5)开启SQL Server服务,连接数据库,执行下面语句,如果报错的话,请查看是否连接上数据库,或者有其他进程连着数据库。
复制代码 代码如下:
alter database wtlog_2008_m12 set emergency
alter database wtlog_2008_m12 set single_user with rollback immediate
alter database wtlog_2008_m12 rebuild log on (name=wtlog_2008_m12, filename=’D:/watcher/database/wtlog_2008_m12.ldf’)
alter database wtlog_2008_m12 SET MULTI_USER with rollback immediate
(6)此时,mdf和ldf的名字都为wtlog_2008_m12,删除多余的mdf文件即可。
免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。
不得使用于非法商业用途,不得违反国家法律。否则后果自负!
2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。
NICE源码网 MsSql mssqlserver恢复ldf文件数据的方法 https://www.niceym.com/61786.html
猜你喜欢
- sqlserver存储过程语法详解 2022-05-24
- SQL Server 2005降级到2000的正确操作步骤分享 2022-05-24
- SQL Server 2005 数据库转 SQL Server 2000的方法小结 2022-05-24
- Sql中将datetime转换成字符串的方法(CONVERT) 2022-05-24
- mssql和sqlite中关于if not exists 的写法 2022-05-24
- 在SQL Server中查询资料库的TABLE数量与名称的sql语句 2022-05-24
- 通过系统数据库获取用户所有数据库中的视图、表、存储过程 2022-05-24
- 使用phpMyAdmin修改MySQL数据库root用户密码的方法 2022-05-24
- 一段脚本实现自动备份并保存最近几天的SQL数据库 2022-05-24
- sql查询表中根据某列排序的任意行语句 2022-05-24