Я использую Row-Level Security для временной таблицы в моей базе данных SQL Server. Чтобы соответствовать GDPR, мне нужно иметь возможность удалять не только эти данные в этой таблице, которая есть из настоящей, но и ее таблицу _History (временную таблицу).
До RLS я делал:
ALTER TABLE [dbo].[Table] SET (SYSTEM_VERSIONING = OFF);
DELETE FROM [dbo].[Table_History] WHERE UserID=@userID;
ALTER TABLE [dbo].[Table] SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[Table_History]));
Но теперь это вызывает ошибку:
Cannot ALTER 'Table' because it is being referenced by object 'fn_Table_Predicate'.
Как правильно включить и отключить управление версиями системы с включенным RLS?
fn_Table_Predicate
ссылается наTable
с помощьюSCHEMA_BINDING
, поэтому вы не можетеALTER
Table
. Вам потребуетсяDROP
все объекты, ссылающиеся наTable
, выполнитьALTER
, а затем воссоздать их. - person Larnu   schedule 08.12.2019