ALTER SCHEMA

适用于:选中标记为“是”Databricks SQL 勾选“是” Databricks Runtime

更改架构的所有者、更改架构的托管存储位置、设置 预测优化 行为、通过设置 DBPROPERTIES更改与架构关联的元数据,或设置已删除托管表的恢复期。 指定的属性值将替代具有相同属性名的任何现有值。

虽然使用 SCHEMADATABASE 是可互换的,但最好使用 SCHEMA

Permissions

若要更改 Unity 目录中的架构,你必须对 MANAGE 架构或其所有者 USE SCHEMA 以及架构所在的目录 USE CATALOG 拥有权限。

根据 对象层次结构,父目录的所有者和具有 MANAGE 父目录的用户也可以执行此操作。

语法

ALTER SCHEMA schema_name
    { DEFAULT COLLATION default_collation_name |
      SET DBPROPERTIES ( { key = val } [, ...] ) |
      [ SET ] OWNER TO principal
      SET TAGS ( { tag_name = tag_value } [, ...] ) |
      UNSET TAGS ( tag_name [, ...] ) |
      { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION |
      SET MANAGED LOCATION location |
      [ SET ] RETAIN DROPPED TO number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS } }

参数

  • schema_name

    要更改的架构的名称。 如果找不到架构,Azure Databricks将引发 SCHEMA_NOT_FOUND 错误。

  • DEFAULT COLLATION default_collation_name

    适用于:检查标记为“是”的 Databricks SQL 检查标记为“是”是 Databricks Runtime 17.1 及更高版本

    更改架构中定义的新对象的默认排序规则。 架构中现有对象的默认排序规则不会更改。

  • DBPROPERTIES (键 = val [, ...] )

    要设置或取消设置的架构属性。

  • [ SET ] OWNER TO 主体

    将架构的所有权转移给 principal

    适用于:选中标记为“是”Databricks SQL 勾选“是” Databricks Runtime 11.3 LTS 及更高版本

    允许使用 SET 作为可选关键字。

  • SET TAGS ( { tag_name = tag_value } [, ...] )

    将标记应用于架构。 需要具有 USE SCHEMA 才能将标记应用于架构。

    适用于:选中标记为“是”Databricks SQL 勾选“是” Databricks Runtime 13.3 LTS 及更高版本

  • 取消设置标记 ( tag_name [, …] )

    从架构中删除标记。 需要具有 USE SCHEMA 才能从架构中删除标记。

    适用于:选中标记为“是”Databricks SQL 勾选“是” Databricks Runtime 13.3 LTS 及更高版本

  • tag_name

    文本 STRINGtag_name 在架构中必须唯一。

  • tag_value

    文本 STRING

  • { 启用 | 禁用 | 继承 } 预测优化

    适用于:勾选“是”Databricks SQL 选中标记为“是” Databricks Runtime 12.2 LTS 及更高版本 勾选“是” 仅 Unity Catalog

    将架构更改为所需的预测优化设置。 默认情况下,创建架构时,行为是从目录 INHERIT。 默认情况下,在架构中创建的新对象将从架构继承该设置。

    如果更改架构,则行为将级联到所有继承预测优化的对象。 显式 ENABLEDISABLE 预测优化的对象不受架构设置影响。

    若要设置架构的预测优化,用户必须对架构具有 CREATE 权限。

    只有非 OpenSharing 中的架构,Unity 目录中的托管目录才有资格进行预测优化。

  • SET 托管位置位置

    适用于:检查标记为“是”的 Databricks SQL 检查标记为“是”是 Databricks Runtime 18.1 及更高 版本检查标记为“是 Unity 目录”

    更改标准架构的托管存储位置。 在架构中创建的新托管表和托管卷使用更新的位置。 Databricks 不会移动现有对象。

    • 位置

      新托管存储位置的云存储路径。 它必须包含在外部位置内。

  • [ SET ] 保留删除到数字 { HOUR |HOURS |DAY |DAYS |WEEK |WEEKS }

    适用于:检查标记为“是” 的 Databricks Runtime 17.3 及更高 版本检查标记为“是 ”,仅限 Unity 目录

    Important

    此功能目前以公共预览版提供。

    设置架构中已删除的托管表的恢复期,在此期间可以使用命令恢复 UNDROP TABLE 已删除的表。 默认值继承自父目录(如果未设置 7 天)。 该值必须为 0 小时(若要禁用恢复),或介于 7-30 天(含)之间。

    将恢复期设置为 0 意味着已删除的表无法使用恢复, UNDROP 数据文件将在 48 小时内从云存储中删除。

    架构级恢复期优先于架构中表的任何目录级设置。 此设置仅适用于配置恢复期后删除的表。 恢复期结束后,托管表的数据文件将在 48 小时内从云存储中删除。

    允许使用 SET 作为可选关键字。 MANAGE需要对架构拥有特权或所有权。 另请参阅 “删除托管表”。

示例

-- Creates a schema named `inventory`.
> CREATE SCHEMA inventory;

-- Alters the schema to set properties `Edited-by` and `Edit-date`.
> ALTER SCHEMA inventory SET DBPROPERTIES ('Edited-by' = 'John', 'Edit-date' = '01/01/2001');

-- Verify that properties are set.
> DESCRIBE SCHEMA EXTENDED inventory;
 database_description_item                 database_description_value
 ------------------------- ------------------------------------------
             Database Name                                  inventory
               Description
                  Location    file:/temp/spark-warehouse/inventory.db
                Properties ((Edit-date,01/01/2001), (Edited-by,John))

-- Transfer ownership of the schema to another user
> ALTER SCHEMA inventory OWNER TO `alf@melmak.et`

-- Applies three tags to the schema named `test`.
> ALTER SCHEMA test SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');

-- Removes three tags from the schema named `test`.
> ALTER SCHEMA test UNSET TAGS ('tag1', 'tag2', 'tag3');

-- Enables predictive optimization for objects in schema my_schema
> ALTER SCHEMA my_schema ENABLE PREDICTIVE OPTIMIZATION;

-- Alter the default collation of a schema
> ALTER SCHEMA my_schema DEFAULT COLLATION UNICODE_CI_AI;

-- Change the managed storage location of a schema
> ALTER SCHEMA my_catalog.my_schema SET MANAGED LOCATION 's3://my-bucket/schemas/my_schema/';

-- Set a 14-day recovery period for dropped managed tables in a schema
> ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 14 DAYS;

-- Set a 7-day recovery period (overrides any catalog-level setting)
> ALTER SCHEMA my_catalog.my_schema SET RETAIN DROPPED TO 7 DAYS;