【发布时间】:2022-08-19 05:08:16
【问题描述】:
我是一名 SQL Server DBA。我想编写一个程序,可以提供给我的团队的其他成员,他们可以在其中查看服务器上当前正在运行的查询的文本(类似于我们在 sp_who2 中查看的方式),但所有值都被屏蔽了。 例子:
| Query text | Query text after Masking |
|---|---|
| Select * from sometable where rating = \'4\' | Select * from sometable where rating = \'****\' |
| Select name, id from sometable where id = \'3233\' | Select name, id from sometable where id = \'****\' |
| UPDATE Customers SET ContactName = \'Alfred Schmidt\' WHERE CustomerID = 1; | UPDATE Customers SET ContactName = \'****\' WHERE CustomerID = ****; |
| INSERT INTO Customers (CustomerName, ContactName) VALUES (\'Cardinal\', \'Tom B. Erichsen\'); | INSERT INTO Customers (CustomerName, ContactName) VALUES (\'*****\', \'****\'); |
-
使用常规 SQL Server 代码很难做到这一点。如果您的存储过程可以访问正则表达式替换功能,则将
\'.*?\'替换为\'****\'。 -
@TimBiegeleisen 是的。这是一个很好的建议。像第三个例子一样处理整数有什么建议吗?
-
正则表达式是否适合您?
-
实际上似乎我没有它,但我认为在 sql 中编写正则表达式替换方法可能不会太难......
-
在没有参数值的情况下,做任何有用的事情(例如性能调整)都会受到打击。实际的最终目标是什么?你有 XY 问题吗?
标签: sql sql-server data-masking pii