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?
我的目标是屏蔽 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?