故事 :今天,我们的一位客户问我们,他在程序中删除的所有数据是否无法恢复。
除了计划的备份,我们每天缩小一次日志文件,然后使用该DELETE命令在需要的地方删除表中的记录。
DELETE
但是,仅出于此目的,我使用编辑器(使用了PSPad)打开了.mdf文件,并搜索了一个特定的唯一数据段(我确定是)在一个表中。
问题 :我在文件中跟踪了它,然后执行了DELETE命令,它仍然存在。
问题 :是否有一个我们不知道的特定命令来删除磁盘上的物理记录?
注意:我们知道有一些特殊的技术可以从硬盘驱动器中恢复丢失的数据,但是在这里我要说的是记事本!
文本可能仍然存在,但是SQL Server没有任何具有任何结构或可用数据的概念。
简单地将“释放空间”释放:不删除,压缩或清零。
“即时文件初始化”功能也依赖于此(不将整个MDF文件清零),并且以前的磁盘数据仍然可以用于全新的数据库:
因为删除的磁盘内容仅在将新数据写入文件时才被覆盖,所以未经授权的主体可能会访问删除的内容。
编辑:回收空间:
ALTER INDEX …重建是最好的方法
使用DBCC SHRINKFILE NOTRUNCATE可以压缩页面放到造成重新分配的页面空白,但不会收回空间 在 一个页面删除的行