Не работает маскировка SQL Server — работает во временной базе данных

#sql-server #masking #tempdb

#sql-server #маскировка #tempdb

Вопрос:

Когда я запускаю приведенный ниже код во временной базе данных, он работает, но не тогда, когда я запускаю его в обычной таблице. Очень странно и не уверен, чего мне не хватает.

 CREATE TABLE #Test (Username VARCHAR(20))

insert into #Test (Username)
values ( 'Graham' ),( 'Bill'),( 'Ray')

ALTER TABLE #Test ALTER COLUMN [Username]    VARCHAR(50) MASKED WITH (FUNCTION = 'partial(2,"XXX",0)'); 
  

Кто-нибудь знает, что происходит?

Я сделал все правильно, основываясь на этой ссылке. https://learn.microsoft.com/en-us/sql/relational-databases/security/dynamic-data-masking?view=sql-server-2017

Комментарии:

1. Каков уровень совместимости вашей базы данных, в которой вы пытаетесь это использовать?

2. Вы имеете в виду между базой данных TempDB и фактической базой данных моей таблицы dbo.Test?

3. Только ваша фактическая база данных

4. Сейчас 130, ты думаешь, это может иметь к этому какое-то отношение?

5. Ну, это могло бы быть — я полагаю, что эта функция появилась в SQL Server 2016, который имеет уровень совместимости 130, — так что она должна была работать.

Ответ №1:

Я обнаружил свою проблему, мне пришлось предоставить пользователю Select в таблице.

 GRANT SELECT ON [dbo].[Test] TO [TestUser];