我需要從數據庫中刪除所有個人數據。許多表都有一個“ModifiedBy”列,其中包含用戶的電子郵件。
是否有一種方便的方法來迭代數據庫中具有 ModifiedBy 列的每個表並運行如下更新:
UPDATE [TableName]
SET [ModifiedBy] = CONVERT (
nvarchar(max),
HASHBYTES('SHA', CONCAT('MY_SALT_VALUE', [ModifiedBy])),
2
)
基於sys.columns
,sys.tables
和sys.schemas
系統視圖的動態語句是一種可能的選擇:
DECLARE @stm nvarchar(max)
DECLARE @err int
SELECT @stm = STRING_AGG(
CAST(CONCAT(
N'UPDATE ',
QUOTENAME(sch.[name]), N'.', QUOTENAME(tab.[name]),
N' SET ',
QUOTENAME(col.[name]), N' = CONVERT (nvarchar(max), HASHBYTES(''SHA'', CONCAT(''MY_SALT_VALUE'', ',
QUOTENAME(col.[name]), N')), 2)'
) AS nvarchar(max)),
'; '
)
FROM sys.columns col
JOIN sys.tables tab ON col.object_id = tab.object_id
JOIN sys.schemas sch ON tab.schema_id = sch.schema_id
WHERE col.[name] = 'ModifiedBy'
PRINT @stm
EXEC @err = sp_executesql @stm
IF @err <> 0 PRINT 'Error found'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句