首页 > 解决方案 > 如果新值大小相同,nvarchar 的 SQL Server 更新语句是否会覆盖磁盘上的相同地址?(微软 SQL 服务器)

问题描述

是否可以在 TSQL 更新语句上覆盖相同的磁盘地址?出于安全或匿名原因,一个用例将阻止恢复磁盘上的原始文本。

CREATE TABLE Test(
  Id int, 
  Message nvarchar(1000))
GO

INSERT INTO Test (Id, Message) VALUES (1, 'Hello!')
GO

所以在这一点上,“你好!” 被写入磁盘。如果运行更新语句,是否可以保证(或至少很有可能)覆盖磁盘上的相同位置?

UPDATE Test SET Message = '000000' WHERE Id = 1
GO

在 SQL Server 实现中,原始“Hello!”的概率是多少?值将不再在磁盘上?

我假设新值的大小相同。我的猜测是,如果新值的大小不同,那么 SQL Server 会将更新后的值写入新位置,留下“你好!” 在原始位置,但现在标记为免费。我还假设删除对磁盘上的原始值没有任何作用,只是将位置标记为空闲。

如果不是这种情况,或者不能保证,或者至少很有可能,是否有另一种方法可以从磁盘中删除该值?

这里的要求不是保证政府机密的安全。这更像是一种营销主张,即已删除的项目确实已经消失并且无法恢复。

我知道这里有很多警告。我知道 SQL 语言没有解决这个问题。我专门询问 SQL Server 的实现。答案可能是不可知的。只是想知道是否有文档、常识或测试实现细节的方法。

标签: sqlsql-serverdatabasetsqldisk-io

解决方案


推荐阅读