ALTER ALERT

修改现有警报的属性并暂停或恢复现有 警报

另请参阅:

CREATE ALERTDESCRIBE ALERTDROP ALERTSHOW ALERTSEXECUTE ALERT

语法

ALTER ALERT [ IF EXISTS ] <name> { RESUME | SUSPEND };

ALTER ALERT [ IF EXISTS ] <name> SET
  [ WAREHOUSE = <string> ]
  [ SCHEDULE = '{ <number> MINUTE | USING CRON <expr> <time_zone> }' ]
  [ COMMENT = '<string_literal>' ]

ALTER ALERT [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER ALERT [ IF EXISTS ] <name> UNSET
  [ WAREHOUSE ]
  [ COMMENT ]

ALTER ALERT <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER ALERT [ IF EXISTS ] <name> MODIFY CONDITION EXISTS (<condition>)

ALTER ALERT [ IF EXISTS ] <name> MODIFY ACTION <action>
Copy

参数

name

要更改的警报的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

{ RESUME | SUSPEND }

指定要对警报执行的操作:

  • RESUME 使暂停的警报处于活动状态。

  • SUSPEND 将警报置于“已暂停”状态。

如果按照间隔(即 num MINUTE)设置警报计划,则为避免含糊不清,计划的 * 基本间隔时间 * 将重置为恢复警报时的当前时间。

基本间隔时间从当前时钟时间开始间隔计数器。例如,如果使用 10 MINUTE 创建警报并在 9:03 AM 恢复警报,则在 9:13 AM、9:23 AM 等时间运行警报。请注意,我们尽最大努力确保绝对精度,但仅保证警报不会在设定的时间间隔发生 之前 执行(例如,在当前示例中,刷新可以首先在上午 9:14 AM 运行,但绝对不会在上午 9:12 AM 运行)。

SET ...

指定要为警报设置的一个(或多个)属性(用空格、逗号或换行符分隔)。

WAREHOUSE = warehouse_name

指定为执行此警报提供计算资源的虚拟仓库。

对于 无服务器警报,请勿设置此属性。

SCHEDULE ...

指定定期评估警报条件的计划。

您可以通过以下方式之一指定计划:

  • USING CRON expr time_zone

    指定用于定期评估警报条件的 Cron 表达式和时区。支持标准 cron 实用程序语法的子集。

    cron 表达式由以下字段组成:

    # __________ minute (0-59)
    # | ________ hour (0-23)
    # | | ______ day of month (1-31, or L)
    # | | | ____ month (1-12, JAN-DEC)
    # | | | | _ day of week (0-6, SUN-SAT, or L)
    # | | | | |
    # | | | | |
      * * * * *
    
    Copy

    支持以下特殊字符:

    特殊字符

    描述

    *

    通配符。为给定字段指定警报时,警报将在该字段的每个时间单位运行。

    例如,月份字段中的 * 指定警报每月运行一次。

    L

    代表“last”。在星期几字段中使用时,它允许您指定结构,例如给定月份的“最后一个星期五”(“5L”)。在日期字段中,它指定该月的最后一天。

    /n

    指示给定时间单位的第 n 个实例。每个时间量子都是独立计算的。

    例如,如果在月份字段中指定 4/3,则条件评估计划为 4 月、7 月和 10 月(即每 3 个月一次,从一年中的第 4 个月开始)。

    在随后的几年中保持相同的计划。也就是说,条件不会计划在 1 月(10 月运行后 3 个月)评估。

    备注

    • cron 表达式当前仅根据指定的时区进行计算。更改账户的 TIMEZONE 参数值(或在用户或会话级别设置该值) :emph:` 不会 ` 更改警报的时区。

    • Cron 表达式定义用于评估警报条件的所有 有效 时间。Snowflake 尝试基于此计划评估条件;但是,如果在下一个有效运行时间开始之前未完成上一次运行,则跳过任何有效运行时间。

    • 当 Cron 表达式中同时包含一个月中的特定某一天和一周中的某一天时,条件评估将安排在满足该月中的某一天 一周中的某一天的日期。例如,SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC' 计划在该月的第 10 天到第 20 天的任何一天以及这些日期之外的任何星期二或星期四的 0AM 进行评估。

  • num MINUTE

    指定在警报评估之间插入的等待时间间隔(以分钟为单位)。仅接受正整数。

    还支持 num M 语法。

    为避免歧义,在恢复警报时设置 * 基本间隔时间 * (使用 ALTER ALERT ... RESUME)。

    基本间隔时间从当前时钟时间开始间隔计数器。例如,如果使用 10 MINUTE 创建警报并在 9:03 AM 恢复警报,则在 9:13 AM、9:23 AM 等评估警报的条件。请注意,我们尽最大努力确保绝对精度,但仅保证条件不会在设定的时间间隔发生 之前 评估(例如,在当前示例中,条件可以首先在 9:14 AM 评估,但绝对不会在 9:12 AM 评估)。

    备注

    支持的最大值为 11520 (8 天)。具有较大 num MINUTE 值的警报永远不会评估其条件。

COMMENT = 'string_literal'

指定警报的注释。

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

指定 标签 名称和标签字符串值。

标签值始终为字符串,标签值的最大字符数为 256。

有关在语句中指定标签的信息,请参阅 对象和列的标签配额

UNSET ...

指定要为警报取消设置的一个(或多个)属性/参数,这会将它们重置回默认值:

  • WAREHOUSE

  • COMMENT

  • TAG tag_key [ , tag_key ... ]

MODIFY CONDITION EXISTS (condition)

指定应表示警报条件的 SQL 语句。您可以使用以下命令:

如果语句返回一行或多行,则执行警报操作。

MODIFY ACTION action

指定在条件返回一行或多行时应执行的 SQL 语句。

要发送通知,您可以 调用 SYSTEM$SEND_EMAIL 或 SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 存储过程

访问控制要求

要执行此 SQL 命令,需要至少具有以下 :ref:` 权限 <label-access_control_overview_privileges>` 的 :ref:` 角色 <label-access_control_overview_roles>`:

  • 恢复警报:

    • 执行 ALTER ALERT 的角色必须对警报具有 OPERATE 或 OWNERSHIP 权限。

    • 拥有警报的 OWNERSHIP 权限的角色还必须具有下列权限:

  • 要暂停警报,执行 ALTER ALERT 的角色必须对警报具有 OPERATE 或 OWNERSHIP 权限。

  • 要修改警报的属性,执行 ALTER ALERT 的角色必须对警报 OWNERSHIP 权限。

请注意,对架构中的对象进行操作还需要对父数据库和架构具有 USAGE 权限。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 当警报恢复时,Snowflake 会验证具有警报的 OWNERSHIP 权限的角色是否也对分配给警报的仓库具有 USAGE 权限,以及全局 EXECUTE ALERT 权限;如果没有,则会产生错误。

  • 只有账户管理员(具有 ACCOUNTADMIN 角色的用户)可以向角色授予全局 EXECUTE ALERT 权限。为便于使用,我们建议创建自定义角色(例如 alert_admin),并为该角色分配 EXECUTE ALERT 权限。然后,任何可以授予权限的角色(例如 SECURITYADMIN 或任何具有 MANAGE GRANTS 权限的角色)均可将此自定义角色授予任何警报所有者角色,以允许其修改自己的警报。有关创建自定义角色和角色层次结构的说明,请参阅 配置访问控制

  • 执行 CREATE ALERT 或 ALTER ALERT 时,不会对条件和操作中的语句执行某些验证检查,包括:

    • 对象标识符的解析。

    • 表达式的数据类型的解析。

    • 对函数调用中实参的数量和类型的验证。

    如果条件或操作的 SQL 语句指定了无效的标识符、不正确的数据类型、不正确的函数实参数量和类型等,则 CREATE ALERT 和 ALTER ALERT 命令不会失败。相反,在执行警报时会发生故障。

    要检查现有警报中的故障,请使用 ALERT_HISTORY 表函数。

    要避免这些类型的失败,在指定警报的条件和操作之前,请验证这些条件和操作的 SQL 表达式和语句。

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

示例

请参阅 暂停和恢复警报

语言: 中文