微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

忘记密码 密码保护SqlServer备份文件恢复方法

sql sever有这么一功能

设置密码保护sqlServer数据库备份文件

备份sqlServer数据库
Backup Database [数据
] To disk='c:\MysqL.bak' With Password = '123',init;
恢复sqlServer
数据库
Restore Database [
数据库] From disk='c:\MysqL.bak' With Password = '123';

但是忘记密码后怎么还原数据库

在备份文件SSET结构中,也就是sql2005备份文件的第三扇区。第0x7a(一般是这样)字节开始16个字节就是密码


圈出来的偏移72字节 Data Set Password 就是记录密码的地址,User Name 就是做备份的用户


通过语句备份一个密码保护数据库,然后用第三扇区的0x7a字节开始的16字节copy到要恢复的不知道密码的备份文件的相同位置覆盖。

然后

Restore Database [aa] From disk='H:\data\data.bak'WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10,MOVE 'dzsc' TO'g:\aa.mdf', MOVE 'dzsc_log' TO 'g:\aa_log.ldf',Password = '已知密码';

FILE = 1数据文件id

'dzsc''dzsc_log'文件的逻辑名,如果不知道,去掉(MOVE 'dzsc' TO 'g:\aa.mdf', MOVE 'dzsc_log' TO'g:\aa_log.ldf',执行一下语句就知道了。

一个 做两个无密码备份,一个密码1的备份,一个密码2的备份

通过两个无密码文件对比知道哪里有差异,a

通过一个密码一个密码文件对比,知道哪里有差异 b1

通过一个密码和另一个密码文件对比,知道哪里有差异 b2

ab1的差异有多大,差异最大的位置在哪里。T1

ab2的差异有多大,差异最大的位置在哪里.T2

发现T1=T2.

将其中一个密码备份的T1位置的数据(16字节)换成另一个密码备份的T2位置的数据,

执行Restore Database [数据库] From disk='c:\MysqL.bak' With Password = '123';

根据提示错误修改sql语句,最后得到

ottom:0px; color:rgb(68,Password = '已知密码';

还原成功!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐