小编典典

SQL的DELETE语句是否真正删除数据?

sql

故事 :今天,我们的一位客户问我们,他在程序中删除的所有数据是否无法恢复。

除了计划的备份,我们每天缩小一次日志文件,然后使用该DELETE命令在需要的地方删除表中的记录。

但是,仅出于此目的,我使用编辑器(使用了PSPad)打开了.mdf文件,并搜索了一个特定的唯一数据段(我确定是)在一个表中。

问题 :我在文件中跟踪了它,然后执行了DELETE命令,它仍然存在。

问题 :是否有一个我们不知道的特定命令来删除磁盘上的物理记录?

注意:我们知道有一些特殊的技术可以从硬盘驱动器中恢复丢失的数据,但是在这里我要说的是记事本!


阅读 303

收藏
2021-05-30

共1个答案

小编典典

文本可能仍然存在,但是SQL Server没有任何具有任何结构或可用数据的概念。

简单地将“释放空间”释放:不删除,压缩或清零。

即时文件初始化”功能也依赖于此(不将整个MDF文件清零),并且以前的磁盘数据仍然可以用于全新的数据库:

因为删除的磁盘内容仅在将新数据写入文件时才被覆盖,所以未经授权的主体可能会访问删除的内容。

编辑:回收空间:

ALTER INDEX …重建是最好的方法

使用DBCC SHRINKFILE NOTRUNCATE可以压缩页面放到造成重新分配的页面空白,但不会收回空间 一个页面删除的行

2021-05-30