SQL Server :: MASCARADO CON (FUNCTION = ‘default()’); no funciona
Mi objetivo es enmascarar columnas en SQL Server 2019. Estoy siguiendo una guía muy sencilla (https://solutioncenter.apexsql.com/how-to-mask-sql-server-data-using-dynamic-data-masking/). Ejecuto esta consulta en AdventureWorks2014 y creo una copia de 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
Ahora voy a enmascarar la columna FirstName tal como se describe en la guía:
ALTER TABLE [AdventureWorks2014].[Person].[PersonMasked] ALTER COLUMN FirstName NVARCHAR(10) MASKED WITH (FUNCTION = ‘default()’);
Pero recibo el siguiente error:
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
¿Dónde me estoy equivocando?
¿Dónde puedo encontrar la función “FUNCTION=’default()'” en SSMS?
davy.ai
Parece que el error que recibiste se debe a que intentaste truncar datos en la columna
FirstName
a 10 caracteres cuando hay valores más largos presentes. Es posible que necesites aumentar la longitud de la columnaFirstName
en tu tablaPersonMasked
o modificar tu función de enmascaramiento para acomodar valores más largos.En cuanto a la función
FUNCTION = 'default()'
, este es un parámetro utilizado en la cláusulaMASKED WITH
para especificar la función de enmascaramiento que se aplicará a la columna.default()
es una de las funciones de enmascaramiento integradas en SQL Server que reemplaza el valor original con un valor predeterminado, como ‘XXXXX’ para cadenas o ’01/01/2000′ para fechas. Puedes encontrar más información sobre las funciones de enmascaramiento y su uso en la documentación de Microsoft.