CREATE ALERT¶
Cria um novo alerta no esquema atual.
- Consulte também:
Sintaxe¶
CREATE [ OR REPLACE ] ALERT [ IF NOT EXISTS ] <name>
WAREHOUSE = <warehouse_name>
SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }'
IF( EXISTS(
<condition>
))
THEN
<action>
Parâmetros obrigatórios¶
name
Cadeia de caracteres que especifica o identificador (ou seja, nome) do alerta; deve ser único para o esquema no qual o alerta é criado.
Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo,
"My object"
). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.Para obter mais detalhes, consulte Requisitos para identificadores.
WAREHOUSE = warehouse_name
Especifica o warehouse virtual que fornece recursos de computação para a execução deste alerta.
SCHEDULE ...
Especifica o cronograma para avaliar periodicamente a condição do alerta.
Você pode especificar o cronograma de uma das seguintes maneiras:
USING CRON expr time_zone
Especifica uma expressão cronológica e um fuso horário para avaliar periodicamente a condição do alerta. Oferece suporte a um subconjunto de sintaxe de utilitário cron padrão.
A expressão cron consiste nos seguintes campos:
# __________ 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) # | | | | | # | | | | | * * * * *
Os seguintes caracteres especiais são suportados:
Caractere especial
Descrição
*
Curinga. Especifica qualquer ocorrência do campo.
L
Significa “último”. Quando usado no campo do dia da semana, permite especificar construções como “a última sexta-feira” (“5L”) de um determinado mês. No campo do dia do mês, ele especifica o último dia do mês.
/n
Indica a
n
enésima instância de uma determinada unidade de tempo. Cada quanta de tempo é computada independentemente.Por exemplo, se
4/3
estiver especificado no campo do mês, a avaliação da condição está programada para abril, julho e outubro (ou seja, a cada 3 meses, começando com o quarto mês do ano).O mesmo cronograma é mantido nos anos seguintes. Ou seja, a condição não está programada para ser avaliada em janeiro (3 meses após a execução de outubro).
Nota
Atualmente, a expressão cron avalia apenas em relação ao fuso horário especificado. Alterar o valor do parâmetro TIMEZONE para a conta (ou definir o valor no nível do usuário ou da sessão) não altera o fuso horário para o alerta.
A expressão cron define todas as horas válidas para a avaliação da condição do alerta. O Snowflake tenta avaliar a condição com base nesse cronograma; no entanto, qualquer tempo de execução válido é ignorado se uma execução anterior não tiver sido concluída antes do próximo tempo de execução válido começar.
Quando tanto um dia específico do mês como um dia da semana são incluídos na expressão cron, a avaliação da condição é programada em dias que satisfaçam o dia do mês ou o dia da semana. Por exemplo,
SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC'
programa uma avaliação no horário 0AM em qualquer dia de 10 a 20 e também em qualquer terça-feira ou quinta-feira fora dessas datas.
num MINUTE
Especifica um intervalo (em minutos) de espera inserido entre as avaliações do alerta. Aceita apenas números inteiros positivos.
Também oferece suporte à sintaxe
num M
.Para evitar ambiguidade, um tempo de intervalo base é definido quando o alerta é retomado (usando ALTER ALERT … RESUME).
O tempo de intervalo base inicia o contador de intervalo a partir da hora atual do relógio. Por exemplo, se um alerta for criado com
10 MINUTE
e o alerta for retomado às 9:03h AM, então a condição do alerta será avaliada às 9:13h AM, 9:23h AM, e assim por diante. Note que fazemos o melhor para assegurar precisão absoluta, mas apenas garantimos que as condições não sejam avaliadas antes que seu intervalo definido ocorra (por exemplo, no exemplo atual, a condição poderia ser avaliada primeiro às 9:14h AM, mas definitivamente não será às 9:12h AM).Nota
O valor máximo suportado é
11520
(8 dias). Os alertas que têm um valor maior denum MINUTE
nunca têm suas condições avaliadas.
condition
A instrução SQL que representa a condição do alerta. Você pode usar os seguintes comandos:
Se a instrução retornar uma ou mais linhas, a ação de alerta será executada.
action
A instrução SQL que deve ser executada se a condição retornar uma ou mais linhas.
Para enviar uma notificação por e-mail, você pode chamar o procedimento armazenado SYSTEM$SEND_EMAIL().
Nota
Se você usar um bloco do Script Snowflake anônimo em uma ação em um alerta, retornar um valor pode resultar em um status incorreto, ID da consulta e informações de erro no histórico de alertas.
Requisitos de controle de acesso¶
Uma função usada para executar este comando SQL deve ter os seguintes privilégios no mínimo:
Privilégio |
Objeto |
Notas |
---|---|---|
EXECUTE ALERT |
Conta |
|
CREATE ALERT |
Esquema |
|
USAGE |
Warehouse |
Necessário no warehouse utilizado para o alerta. |
Observe que operar em qualquer objeto de um esquema também requer o privilégio USAGE no banco de dados e esquema principais.
Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.
Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.
Notas de uso¶
Os alertas são executados utilizando os privilégios concedidos ao proprietário do alerta (ou seja, a função que tem o privilégio OWNERSHIP no alerta). Para a lista de privilégios mínimos necessários para executar os alertas, consulte Concessão dos privilégios para criar alertas.
Para verificar se a função de proprietário do alerta tem os privilégios necessários para executar instruções SQL para a condição e ação, recomendamos que você execute estas instruções usando a função de proprietário do alerta antes de especificá-las em CREATE ALERT.
Quando você cria um alerta, o alerta é suspenso por padrão.
Para tornar o alerta ativo, você deve executar ALTER ALERT … RESUME.
Exemplos¶
Consulte Como criar um alerta.