Résolution des problèmes liés aux budgets

Ce chapitre explique comment surveiller les problèmes des budgets et fournit des solutions à des problèmes courants.

Utilisation d’un tableau des événements pour contrôler les budgets

Vous pouvez utiliser un tableau des événements pour collecter des données de télémétrie liées aux budgets. Une fois que Snowflake a commencé à collecter les données du tableau des événements, vous pouvez interroger le tableau, créer un flux pour suivre les modifications ou définir des alertes pour envoyer des notifications lorsque certains événements se produisent.

If you don’t want to collect telemetry data for budgets, you must set the ENABLE_BUDGET_EVENT_LOGGING account parameter to FALSE to turn it off.

Compréhension des événements

Le tableau suivant décrit les valeurs du tableau des événements qui correspondent aux événements de budget afin que vous puissiez vous concentrer sur les événements appropriés. Pour des informations détaillées sur la structure d’un tableau des événements, voir Colonnes de table d’événements.

Colonnes du tableau des événements

Champ

Value

Description

resource_attributes

snow.cost.budget.id

budget_id

ID unique de l’instance de budget.

snow.cost.budget.name

budget_name

Nom complet de l’instance de budget.

scope

name

snow.cost.budget

Identificateur de constante pour tous les événements de télémétrie du budget.

record_type

s/o

EVENT

Indique un événement du journal du budget.

record

name

event_name

Nom de l’événement descriptif. Les valeurs possibles sont les suivantes :

  • BUDGET_UNVERIFIED_RECIPIENTS — Se produit lorsque les adresses e-mail ne figurent pas dans la liste des destinataires autorisés de l’intégration ou lorsqu’il y a des adresses e-mail qui ne sont pas vérifiées.

  • BUDGET_INVALID_INTEGRATION — Se produit lorsqu’une intégration de notification n’existe pas ou que l’utilisateur n’y a pas accès.

severity_text

INFO, WARNING ou ERROR

Niveau de gravité de l’événement de budget.

value

message

message

Message d’événement descriptif, incluant souvent des détails contextuels tels qu’un nom d’intégration ou une opération.

Utilisez les exemples suivants pour mieux comprendre comment identifier les événements de budget dans un tableau des événements.

Requête : Trouver tous les événements liés à la propagation de tous les budgets du compte
SELECT
    TIMESTAMP,
    RESOURCE_ATTRIBUTES,
    SCOPE,
    RECORD_TYPE,
    RECORD,
    VALUE
  FROM SNOWFLAKE.TELEMETRY.EVENTS
  WHERE
    RECORD_TYPE = 'EVENT' AND
    SCOPE['name'] = 'snow.cost.budget';
Copy
Requête : Rechercher tous les événements liés à un budget spécifique (par exemple, MY_DB.SCH1.MY_BUDGET)
SELECT
    TIMESTAMP,
    RESOURCE_ATTRIBUTES,
    SCOPE,
    RECORD_TYPE,
    RECORD,
    VALUE
  FROM SNOWFLAKE.TELEMETRY.EVENTS
  WHERE
    RECORD_TYPE = 'EVENT' AND
    SCOPE['name'] = 'snow.cost.budget'
    AND RESOURCE_ATTRIBUTES['snow.cost.budget.name'] ILIKE 'MY_DB.SCH1.MY_BUDGET';
Copy

Troubleshooting specific problems

Les scénarios suivants peuvent vous aider à résoudre les problèmes qui peuvent survenir lors de la création ou de la modification de budgets :

Vous ne pouvez pas activer le budget du compte

Il existe plusieurs raisons pour lesquelles il se peut que vous ne puissiez pas activer le budget de votre compte :

Erreur

Unknown user-defined function SNOWFLAKE.LOCAL.ACTIVATE

Cause

Si votre compte Snowflake est nouveau, le budget du compte n’est pas encore disponible dans votre compte.

Solution

Attendez que le budget du compte soit disponible dans votre compte venant d’être créé. Vous pourrez l’activer une fois qu’il sera disponible.

Erreur

FAILURE: Uncaught exception of type 'BUDGET_ALREADY_ACTIVATED' on line X at position X

Cause

Le budget du compte a déjà été activé.

Solution

Vous pouvez appeler la méthode <nom_budget>!GET_CONFIG pour afficher l’horodatage de l’activation :

CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_CONFIG();
Copy

Erreur

-20000 (P0001): Uncaught exception of type 'NO_PERMISSION_TO_ACTIVATE_BUDGET' on line X at position X

Cause

Votre compte ne prend pas encore en charge la fonction Budgets.

Solution

La fonction Budgets n’est pas disponible pour les comptes dans les régions Gov. La prise en charge des régions Gov sera disponible dans une prochaine version.

Vous ne pouvez pas créer de budget personnalisé

Il existe de nombreuses raisons pour lesquelles vous ne pouvez pas créer un budget personnalisé.

Erreur

FAILURE: SQL access control error: Insufficient privileges to operate on class 'BUDGET'

Cause

Le rôle que vous utilisez n’a pas les privilèges requis pour créer des budgets personnalisés.

Solution

Utilisez un rôle avec les privilèges requis. Voir Créer un rôle personnalisé pour créer des budgets.

Erreur

FAILURE: Uncaught exception of type 'STATEMENT_ERROR' on line 0 at position -1 :
Uncaught exception of type 'UNSUPPORTED_BUDGET_TYPE' on line X at position X

Cause

Vous passez des arguments à la méthode du constructeur pour créer un budget.

Solution

Consultez CREATE BUDGET et modifiez votre instruction de création.

Vous ne pouvez pas activer de budget personnalisé

Erreur

FAILURE: Uncaught exception of type 'STATEMENT_ERROR' on line 0 at position -1 :
Uncaught exception of type 'UNSUPPORTED_BUDGET_TYPE' on line X at position X

Cause

Vous avez essayé d’appeler la méthode ACTIVATE sur un budget personnalisé.

Solution

La méthode ACTIVATE n’est disponible que sur le budget du compte. Une fois que vous avez créé un budget personnalisé, utilisez les méthodes <nom_budget>!SET_SPENDING_LIMIT et <nom_budget>!SET_EMAIL_NOTIFICATIONS pour configurer le budget et commencer à recevoir des e-mails de notification.

Vous ne pouvez pas appeler de méthodes sur le budget du compte

Il y a plusieurs raisons pour lesquelles l’appel d’une méthode sur le budget du compte peut échouer.

Erreur

-20000 (P0001): Uncaught exception of type 'FUNCTION_NOT_SUPPORTED_FOR_ACCOUNT_ROOT_BUDGET' on line 11 at position 18

Cause

Vous avez essayé d’appeler l’une des méthodes suivantes sur le budget du compte :

Solution

Ces méthodes ne sont pas disponibles sur le budget du compte. Le budget du compte contrôle tous les objets pris en charge dans le compte et les objets ne peuvent pas être ajoutés ou supprimés. Pour plus d’informations, consultez Budget du compte et budgets personnalisés.

Erreur

-20000 (P0001): Uncaught exception of type 'ACCOUNT_ROOT_BUDGET_NOT_ACTIVATED' on line X at position X

Cause

Vous avez essayé d’appeler une méthode sur le budget du compte avant que le budget du compte ne soit activé.

Solution

Activez le budget du compte.

Vous ne pouvez pas ajouter ou supprimer des objets d’un budget personnalisé

Pour réussir à ajouter ou à supprimer un objet d’un budget personnalisé, le rôle utilisé pour appeler la méthode doit avoir les privilèges requis et le rôle.

Erreur

002141 (42601): SQL compilation error:
Unknown user-defined function <budget_db>.<budget_schema>.<budget_name>!ADD_RESOURCE

Cause

Le rôle que vous avez utilisé pour appeler la méthode d’instance ne dispose pas des privilèges requis pour ajouter (ou supprimer) des objets au budget.

Solution

Accordez le rôle d’instance et les privilèges requis au rôle utilisé pour appeler la méthode. Pour plus d’informations, voir Créer un rôle personnalisé pour surveiller un budget personnalisé.

Erreur

002003 (02000): SQL compilation error:
<object_type> '<object_name>' does not exist or not authorized.

Cause

Vous avez essayé d’ajouter un objet à un budget personnalisé, mais le rôle que vous avez utilisé pour appeler la méthode ne dispose pas des privilèges requis.

Solution

Pour ajouter (ou supprimer) un objet d’un budget, le rôle utilisé pour appeler la méthode doit avoir le privilège APPLYBUDGET sur l’objet. Si l’objet parent est une base de données ou un schéma, vous devez également disposer du privilège USAGE sur la base de données et le schéma qui contiennent l’objet.

Pour plus d’informations, consultez la liste des privilèges requis pour les objets.

Erreur

Uncaught exception of type 'EXPRESSION_ERROR' on line 10 at position 21 :
Privilege 'APPLYBUDGET' is not authorized on the reference object.

Cause

Si vous créez une référence pour un objet sans spécifier le paramètre PRIVILEGE dans l’instruction SYSTEM$REFERENCE.

Solution

Créez la référence avec le privilège APPLYBUDGET sur l’objet.

Erreur

505001 (55000): Uncaught exception of type 'EXPRESSION_ERROR' on line 10
at position 21 : Specified object does not exist or not authorized for
the reference.

Cause

Les causes de ce message d’erreur sont multiples :

  • Si vous essayez d’ajouter la base de données SNOWFLAKE à un budget personnalisé avec une instruction en ligne SYSTEM$REFERENCE.

  • Vous ne disposez pas des privilèges requis sur l’objet pour en créer une référence. La référence valide est nécessaire pour ajouter l’objet à un budget.

Solution

Vous ne pouvez pas définir de notifications par e-mail pour un budget

Les scénarios suivants peuvent vous aider à résoudre des problèmes courants lorsque vous appelez la méthode <nom_budget>!SET_EMAIL_NOTIFICATIONS.

Erreur

Unknown user-defined function <database_name>.<schema_name>.<budget_name>.SET_EMAIL_NOTIFICATIONS

Cause

Le rôle que vous avez utilisé pour définir les notifications par e-mail pour un budget personnalisé n’a pas le rôle d’instance ADMIN.

Solution

Utilisez un rôle doté des privilèges et des rôles requis. Voir Exigences en matière de contrôle d’accès pour SET_EMAIL_NOTIFICATIONS.

Erreur

Integration '<INTEG_NAME>' does not exist or not authorized.

Cause

L’intégration des notifications n’existe pas.

Solution

Utilisez une intégration de notification valide. Pour plus d’informations, voir Créer une intégration des notifications par e-mail. Incluez les adresses e-mail pour les annonces de budgets dans la liste ALLOWED_RECIPIENTS.

Erreur

FAILURE: Uncaught exception of type 'EXPRESSION_ERROR' on line 16 at position 34 : Following email address(es) are not
allowed by the email integration <INTEGRATION_NAME>: [<email>]

Cause

Les adresses e-mail ne sont pas incluses dans l’intégration de la notification.

Solution

Ajoutez les adresses e-mail à l’intégration de notification ou utilisez une intégration de notification qui inclut toutes les adresses e-mail de la liste ALLOWED_RECIPIENTS.

Erreur

Email recipients in the given list at indexes [<index_list>] are not allowed. Either these email addresses are not yet validated
or do not belong to any user in the current account.

Cause

Certaines ou toutes les adresses e-mail que vous avez tenté d’ajouter ne sont pas validées.

Solution

Voir Vérifier les adresses e-mail des destinataires de la notification par e-mail.

Vous ne pouvez pas appeler avec succès la méthode GET_SERVICE_TYPE_USAGE

Les scénarios suivants peuvent vous aider à résoudre des problèmes courants lorsque vous appelez la méthode <nom_budget>!GET_SERVICE_TYPE_USAGE.

Erreur

001044 (42P13): SQL compilation error: error line 0 at position -1 Invalid argument types for function 'GET_SERVICE_TYPE_USAGE':
(VARCHAR(X), VARCHAR(X), VARCHAR(X), VARCHAR(X))

Cause

Vous avez appelé la méthode avec des arguments non valides ou un nombre d’arguments incorrect.

Solution

Vérifiez que les arguments que vous utilisez pour appeler la méthode sont valides et que vous avez inclus tous les arguments requis.

Erreur

002151 (22023): Uncaught exception of type 'STATEMENT_ERROR' on line 16 at position 23 : SQL compilation error:
[:TIME_DEPART] is not a valid date/time component for function DATE_TRUNC.

Cause

L’argument TIME_DEPART est une chaîne non valide.

Solution

Utilisez l’une des valeurs valides énumérées pour l’argument TIME_DEPART dans la rubrique de référence.

Erreur

100094 (22000): Uncaught exception of type 'STATEMENT_ERROR' on line 16 at position 23 : Unknown timezone: '<invalid_timezone>'

Cause

L’argument USER_TIMEZONE est une chaîne non valide.

Solution

Utilisez une chaîne de fuseau horaire valide. Pour plus d’informations, voir les notes sur l’utilisation de GET_SERVICE_TYPE_USAGE.

La fonction Budgets n’est pas disponible pour votre compte

Erreurs

FAILURE: SQL compilation error: Class 'SNOWFLAKE.CORE.BUDGET' does not exist or not authorized.
000002 (0A000): Uncaught exception of type 'STATEMENT_ERROR' on line 0 at position -1 : Unsupported feature 'TOK_RESOURCE_GROUP'.

Cause

Votre compte ne prend pas encore en charge la fonction Budgets.

Solution

La fonction Budgets n’est pas disponible pour les comptes dans les régions Gov. La prise en charge des régions Gov sera disponible dans une prochaine version.