我可以更改 cdc 架构的所有者吗?

Zik*_*ato 5 security change-data-capture owner sql-server-2019 schema-migration

我已使用以下命令在数据库上启用了更改数据捕获 (CDC)exec sys.sp_cdc_enable_db

这将创建一个由cdc用户拥有的新cdc架构

select
    s.*
    , dp.name
from sys.schemas as s
join sys.database_principals as dp
    on dp.principal_id = s.principal_id
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

因为我想利用所有权链接并使用 proc 从此架构中读取数据,所以我可以将所有者更改为dbo吗?

ALTER AUTHORIZATION ON SCHEMA::cdc TO dbo
Run Code Online (Sandbox Code Playgroud)

此命令起作用并更改所有者。但疾病预防控制中心已经启用了一段时间,我担心未来会进一步破坏一些东西。

Ben*_*hul 4

文档中

为了使更改数据捕获 (CDC) 正常运行,您不应手动修改任何 CDC 元数据,例如 CDC 架构、更改表、CDC 系统存储过程、默认 cdc 用户权限 (sys.database_principals) 或重命名 cdc 用户。

在同一文档的其他地方(在“数据流”部分),有一个图表强烈暗示您应该使用cdc.fn_cdc_get_all_changes_<capture_instance>and/or cdc.fn_cdc_get_net_changes_<capture_instance>。在这些文档中,有一些关于权限的内容

需要 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员身份。对于所有其他用户,需要对源表中所有捕获的列具有 SELECT 权限,并且如果定义了捕获实例的门控角色,则需要该数据库角色的成员身份。

这意味着对基础表的 SELECT 权限应该足够了,您不需要更改有关 CDC 工作方式(权限或其他)的任何内容。