我的一位客户希望我对他的一些旧数据进行定期"真正"破坏,我正在评估最好的方法.
数据在表中,我想销毁其中包含的一些行.
我可以手动删除/导出另一台计算机上的数据库/消磁硬盘/重新导入保存的数据,但我需要一个自动解决方案.
是否有一个等效的删除(如在delete*from foo中)命令,它会执行数据的安全销毁(使用DoD安全擦除,或类似的东西?)
您是否看到了执行此自动删除的其他方法?
顺便说一句,我知道有人检索我使用sql delete命令销毁的一些数据的可能性非常小,但我的一些客户需要它.所以请不要将这个问题变成关于数据处理程序主题的全球辩论!
编辑:我想要解决的问题不是"我应该如何销毁数据以使其无法恢复",而是"如何说服我的客户说他们的数据无法恢复".
使用某种形式的加密来存储表中的数据字段.
当您决定"删除"时,重新加密您将继续使用新密钥的数据.丢弃旧密钥,并删除使用旧密钥加密的行.收缩.
即使有人恢复了行,没有旧密钥,也没有人能够恢复数据.只要确保旧钥匙真的丢弃了 - 你可以只用一根usb棒,然后摧毁它等等.
来自联机丛书:
从表中删除操作或导致行移动的更新操作可以通过删除对该行的引用来立即释放页面上的空间.但是,在某些情况下,该行可以作为虚假记录物理地保留在数据页面上.后台进程会定期删除Ghost记录.数据库引擎不会返回此残差数据以响应查询.但是,在数据或备份文件的物理安全性受到威胁的环境中,您可以使用
sp_clean_db_free_space
清除这些虚假记录.
这应该将您的"免费"数据页面清零.如果使用了即时初始化,也可以使用它,但您决定要将页面清零.
为了回答您更新的问题,"我怎样才能说服我的客户他们的数据无法恢复",BOL条目清楚地说明了"Ghost记录会被后台进程定期删除".