操作Databricks系统Schema后访问Catalog报错:Delta Sharing基础提供程序不存在
问题根源与解决方法
问题本质
System Catalog是Unity Catalog的内置核心元数据目录,它和底层Delta Sharing服务存在强绑定关系,你执行的批量DELETE/PUT禁用/启用所有System Schema的操作,破坏了它与默认Delta Sharing提供者的元数据关联,导致后续访问时找不到支撑它的基础提供者,从而抛出400错误。
具体触发原因:
- System Catalog的默认Schema(比如
information_schema、delta_sharing)和内置Delta Sharing提供者深度绑定,批量删除操作会触发元数据级联变更,直接移除了该Catalog依赖的底层提供者记录。 - System Catalog的所有者是"System User"——这是系统自带的维护账号,手动修改其下Schema的状态会打破元数据一致性,系统无法自动恢复绑定关系。
修复步骤
检查Delta Sharing提供者状态
使用Unity Catalog管理员权限执行SQL命令:SHOW PROVIDERS;确认是否存在名为
system的内置提供者,若不存在则需要重新创建。重建内置Delta Sharing提供者
执行以下命令创建与System Catalog绑定的内置提供者:CREATE PROVIDER system WITH LOCATION = 'internal';重新关联System Catalog到提供者
执行命令恢复Catalog与提供者的绑定:ALTER CATALOG system SET PROVIDER = system;启用System Catalog下的默认Schema
逐个启用核心Schema:ALTER SCHEMA system.information_schema SET ENABLED = true; ALTER SCHEMA system.delta_sharing SET ENABLED = true;验证恢复结果
回到Unity Catalog界面,尝试访问system catalog下的Schema,确认400错误消失。
注意事项
- 永远不要对System Catalog执行批量Schema禁用/启用操作,官方文档中的相关步骤仅适用于自定义创建的Catalog,而非系统内置的System Catalog。
- System Catalog的元数据由系统自动维护,手动修改极易引发元数据不一致问题,遇到类似需求优先使用官方支持的操作路径。
内容的提问来源于stack exchange,提问作者Mayank Jain
相关产品推荐
相关产品推荐

