问题描述
我正在使用Azure SQL数据库,并且某些表列正在使用动态掩码,如下所示:
CREATE TABLE PartialMask
(
ID INT IDENTITY (1,1) PRIMARY KEY NOT NULL,Name VARCHAR(255) MASKED WITH (FUNCTION = 'partial(2,"XXXXXX",2)') NULL,Comment NVARCHAR(255) MASKED WITH (FUNCTION = 'partial(5,"XXXX",5)') NOT NULL
);
例如,名称的原始数据为“ ABCDE”,则查询将显示“ ABXXXXXXDE”
但是,当我们使用trim()作为名称列时,例如
Select trim(name) From PartialMask
我会得到“ xxxx”。
您有同样的问题和解决方案吗?
解决方法
我测试了并得到相同的问题:
这是原因:
参数
- 字符是任何非LOB的文字,变量或函数调用 包含的字符类型(nvarchar,varchar,nchar或char) 应删除的字符。 nvarchar(max)和varchar(max) 类型是不允许的。
trim()
不支持从动态数据屏蔽功能获得的字符。 Dynamic data masking是为了保护数据,如果没有权限,我们将看不到完整的数据。