无语的开头
工程上的小伙伴将服务器的【本地IP】一改,然后数据库连不上了,可能有点着急,就把SqlServer2012给卸载了(大家都知道,SqlServer卸载干净不容易,结果可知啊…)。
然后他再装SqlServer2012就装不上了,这时候才回头发现,原来他说的数据库备份,是直接将数据库的【mdf文件】拷贝出来的(有且只有mdf 而且还不是常规的脱机>分离)…
这小伙伴虽然不用重装系统,却安装了SqlServer2014,后续一片折腾…
具体情况
操作:新建数据库>>关闭数据库服务>>将mdf覆盖>>修改mdf权限>>开启服务>>运行SQL 修复目标数据库>>OK
现实很骨感啊:
好好干活解决问题
需要还原的mdf,为A
新建的mdf,为B
准备SqlServer2012>>新建数据库B>>停止数据库服务>>用A覆盖B>>修改mdf访问权限(everyone完全控制)>>启动数据库服务>>数据库软件中新建查询
执行下列SQL:
修改数据库为【紧急】:
ALTER DATABASE safeMonitorApp1 SET EMERGENCY
修改数据库为【单用户访问】:
ALTER DATABASE safeMonitorApp1 SET SINGLE_USER
然后删除目录下的 ldf,然后执行
ALTER DATABASE safeMonitorApp1 REBUILD LOG ON (NAME=safeMonitorApp1_log, FILENAME=‘D:\DbProblem\safeMonitorApp1_log.ldf’)
最后执行这个一句,数据库就可用了:
ALTER DATABASE safeMonitorApp1 SET MULTI_USER
完在这里插入代码片成,将A 脱机分离,拿到目标主机的数据库上附加(记得把mdf、ldf的权限修改everyone完全控制),然后就可以了。
建议哈
数据库备份,采用bak备份(即数据库右键>>任务>>备份) 或者是 采用 整库备份(即数据库脱机>>分离>>mdf+ldf都备份)