问题描述
我们在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