无法授予数据库级别的CHANGE TRACKING权限

问题描述

我们在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

解决方法

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

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