【问题标题】:Cannot grant CHANGE TRACKING permission at database level无法在数据库级别授予 CHANGE TRACKING 权限
【发布时间】:2020-08-27 14:36:32
【问题描述】:

我们在 SQL Server 上启用了更改跟踪。启用更改跟踪的表跨越多个模式。我们可以成功执行以下操作以在模式类上授予 VIEW CHANGE TRACKING,但我们希望在数据库级别授予此权限以覆盖所有模式。尝试在数据库类级别授予时,它返回以下错误。我在 Test 数据库的上下文中运行该命令。我找不到任何文件表明无法在此级别授予此特定权限。

Incorrect syntax near 'VIEW CHANGE TRACKING'.

-- Granting on schema class works
GRANT VIEW CHANGE TRACKING ON SCHEMA::dbo TO TestUser

-- Granting on database class fails
GRANT VIEW CHANGE TRACKING ON DATABASE::Test TO TestUser

【问题讨论】:

  • 除非我记错了,否则不能在数据库级别应用它。您需要将它单独应用于每个架构/对象。如果您想在整个数据库上使用它,则必须使用动态脚本。

标签: sql-server grant change-tracking


【解决方案1】:

这是一个为所有包含更改跟踪表的模式生成授权的脚本:

select distinct 'grant view change tracking on schema::' +quotename(schema_name(schema_id))+ ' to testuser;'
from sys.tables t
join sys.change_tracking_tables ct
  on t.object_id = ct.object_id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2014-08-16
    • 2021-01-01
    • 2020-10-12
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多