【发布时间】:2019-02-18 14:23:16
【问题描述】:
我正致力于在 SQL Datawarehouse 的多个数据库中屏蔽个人数据。我创建了一个表,其中包含我想要被屏蔽的列,并希望通过这样的单个脚本来更改数据库中多个表中存在的这些列
IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'TableName' and
COLUMN_NAME = 'BirthDate' OR COLUMN_NAME = 'EmailAddress' OR COLUMN_NAME = 'FirstName' OR COLUMN_NAME = 'LastName' OR COLUMN_NAME = 'MiddleName' OR COLUMN_NAME = 'Name.First' OR COLUMN_NAME = 'MName.Last' OR COLUMN_NAME = 'PhoneNumber'
)
BEGIN
ALTER TABLE TABLE_NAME
ALTER COLUMN [COLUMN_NAME] NVARCHAR(200) MASKED WITH (FUNCTION = 'default()') NULL
END
这不起作用。有什么想法吗?
【问题讨论】:
-
我什至看不到这种方法的意义。如果您想屏蔽某些列,那么为什么不创建一个以安全方式呈现数据的视图(或者可能是 proc)?
-
嗨蒂姆,感谢您的快速回复。问题不在于安全,而在于 gdpr。我可以对列进行更新,但我只是想知道屏蔽是否是更好的选择。
-
我是说只写一个选择来生成你想看到的输出,然后忘记它。复制数据有各种各样的注意事项,例如那些没有被屏蔽的数据很容易随着其原始来源的变化而变得陈旧。
-
好的,我明白了,但不幸的是我别无选择 :)
标签: sql sql-server data-masking sql-data-warehouse