#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];