Snowflake在表上创建Stream报错:CHANGE_TRACKING未开启权限不足
报错根因
Snowflake的Stream功能依赖源表的CHANGE_TRACKING配置捕获插入、更新、删除等DML变更记录,源表未开启该配置时,就会触发该权限类报错。
排查步骤
- 验证源表的CHANGE_TRACKING状态,执行如下SQL,替换对应占位符后查询:
SELECT CHANGE_TRACKING FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_CATALOG = '<源表所在库名>' AND TABLE_SCHEMA = '<源表所在Schema名>' AND TABLE_NAME = '<源表名>';
若返回结果为FALSE,即可确认是该配置未开启导致的问题。 - 确认当前使用的角色拥有源表的ALTER权限,只有持有该权限的角色才能修改CHANGE_TRACKING配置,执行如下SQL验证:
SHOW GRANTS ON TABLE <源表所在库名>.<源表所在Schema名>.<源表名>;
在返回结果的privilege列中,查看当前角色是否对应有ALTER权限。
解决步骤
- 切换到拥有源表ALTER权限的角色:
USE ROLE <拥有权限的角色名>; - 开启源表的CHANGE_TRACKING配置:
ALTER TABLE <源表所在库名>.<源表所在Schema名>.<源表名> SET CHANGE_TRACKING = TRUE; - 重新执行Stream创建语句即可正常完成创建。
注意:CHANGE_TRACKING开启后会产生额外的存储成本,变更数据保留时长与表所属Schema的
DATA_RETENTION_TIME_IN_DAYS参数保持一致;如果后续不再需要对应Stream,可手动关闭该配置减少存储开销。
内容的提问来源于stack exchange,提问作者Sri
相关产品推荐
相关产品推荐

