无法更改 'Table',因为它正被对象 'predicate' - SQL Server RLS with Temporal 引用

Cannot ALTER 'Table' because it is being referenced by object 'predicate' - SQL Server RLS with Temporal

我在 SQL 服务器数据库的临时 table 上使用行级安全性。为了遵守 GDPR,我不仅需要能够删除此 table 中从现在开始的数据,还需要能够删除其 _History table(时间 table)。

在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 的情况下启用和禁用系统版本控制的正确方法是什么?

我的情况

我在更改引用另一个视图的视图时遇到了类似的问题。为了示例,我重命名了视图:

当试图改变我的视图 AAAAA 时,我收到了这条消息:

Cannot ALTER 'AAAAA' because it is being referenced by object 'BBBBB'.

我的视图 BBBBB 是使用 "WITH SCHEMABINDING"

创建的

我是怎么解决的

所以我改变了我的观点 BBBBB,只是删除了 "WITH SCHEMABINDING"(其余逻辑保持不变)。
那我改观了AAAAA.
完成后,我改变了我的观点 BBBBB 再次添加 "WITH SCHEMABINDING"

希望对您有所帮助。