日期:2014-05-17  浏览次数:20939 次

如何读取或修改mdf/log文件
昨天在逛网页的时候看到这一篇帖子
http://blogs.msdn.com/b/apgcdsd/archive/2013/10/23/10459397.aspx
其中
SQL Server 2005 – 当Checksum失败时的数据恢复可能
部分你可以看到,他通过16进制编译器,模拟了一个破坏性试验
“-- 通过16进制编辑器来引入checksum失败”
我照这他的不走做,这一步就是玩不来了啊,
首先他那个修改截图,到底是修改的mdf还是log文件啊?
那东西能通过16进制编译器看到明文?
还是说这是微软内部黑科技才能修改看到的?
求解惑
若真的可以明文读取,这得多方便啊,比如获取log中的误删记录什么的

------解决方案--------------------
通过dbcc page也可以查看数据的,另外,还有一个命令--直接写数据页面
DBCC writepage(数据库id,fileid,页id,偏移量,字节数,0x6161616161)


可以直接修改mdf中的数据,这些研究研究还行,不太可能用来直接读取大量的日志和文件数据


------解决方案--------------------
引用:
数据库未加密的前提?是指什么操作?我是按照那个网页的步骤创建的测试用例,但是打开16进制文件,无法找到对应文字啊
还是说他的测试案例是2005才能用,,我的2008R2就不能这么玩了?

默认情况下数据库是未加密的.步骤:
 1.卸离数据库.
 2.找到对应的数据文件(.mdf)->右键->属性->安全->添加everyone完全控制权限.
 3.右键->打开方式->选择Visual Studio打开.

------解决方案--------------------
当然是修改MDF或者NDF文件。CHECKSUM只对数据文件生效。LDF是没有CHECKSUM的。
如果没有启用加密,MDF和NDF文件是可以看的,可以直接用DBCC读取某个数据页。
------解决方案--------------------
如下测试,

use DBAP2

create table csdn
(username char(20))

insert into csdn(username)
 select 'starseeker7'

select username from csdn

/*
username
--------------------
starseeker7         

(1 row(s) affected)
*/


1.卸离数据库.
2.找到对应的数据文件(.mdf)->右键->属性->安全->添加everyone完全控制权限.
3.右键->打开方式->选择Visual Studio打开.
  Visual Studio中按[Ctrl]+[F]打开查找对话框,输入查找内容"starseeker7",
  是可以定位到的喔.
查找结果,



------解决方案--------------------
引用:
如下测试,

use DBAP2

create table csdn
(username char(20))

insert into csdn(username)
 select 'starseeker7'

select username from csdn

/*
username
--------------------
starseeker7         

(1 row(s) affected)
*/


1.卸离数据库.
2.找到对应的数据文件(.mdf)->右键->属性->安全->添加everyone完全控制权限.
3.右键->打开方式->选择Visual Studio打开.
  Visual Studio中按[Ctrl]+[F]打开查找对话框,输入查找内容"starseeker7",
  是可以定位到的喔.
查找结果,


虽然可以改下,但是你还能附加上去吗?或者还原到正常,能够读取出来吗?
我也尝试