SQL 服务器 :: 屏蔽(功能 = 'default()');不工作

SQL Server :: MASKED WITH (FUNCTION = 'default()'); not working

我的目标是屏蔽 SQL Server 2019 上的列。

我正在关注一个非常简单的 guide

我 运行 针对 AdventureWorks2014 的查询,我创建了 Person.Person 的副本:

SELECT  [BusinessEntityID]
      ,[PersonType]
      ,[NameStyle]
      ,[Title]
      ,[FirstName]
      ,[MiddleName]
      ,[LastName]
      ,[Suffix]
      ,[EmailPromotion]
      ,[AdditionalContactInfo]
      ,[Demographics]
      ,[rowguid]
      ,[ModifiedDate]
      INTO [Person].[PersonMasked]
  FROM [AdventureWorks2014].[Person].[PersonMasked]
  ORDER BY BusinessEntityID

我现在要按照指南中的说明屏蔽 FirstName 列:

ALTER TABLE [AdventureWorks2014].[Person].[PersonMasked]
ALTER COLUMN FirstName NVARCHAR(10) MASKED WITH (FUNCTION = 'default()');

我收到错误:

Msg 8152, Level 16, State 30, Line 1
String or binary data would be truncated.
The statement has been terminated.

Completion time: 2021-11-23T15:32:43.0426983+01:00

我哪里错了?

我在哪里可以找到 SSMS 中的函数 FUNCTION = 'default()'

我认为该错误与将 nvarchar 精度更改为 10 而不是

FUNCTION = 'default()' 

如果您有任何值超过 10 个字符的数据,它们将被截断,这将导致数据丢失。

就这样:

ALTER TABLE [AdventureWorks2014].[Person].[PersonMasked]
ALTER COLUMN FirstName NVARCHAR(50) MASKED WITH (FUNCTION = 'default()');

有用的链接:
Altering column size in SQL Server
What happens when you modify (reduce) a column's length?