预算故障排除

本主题内容:

以下场景可帮助您排查在创建或编辑预算时可能出现的问题:

您无法激活账户预算

有多种原因可能会导致您无法激活账户预算:

错误

Unknown user-defined function SNOWFLAKE.LOCAL.ACTIVATE

原因

如果您的 Snowflake 账户是新账户,则账户预算在您的账户中尚不可用。

解决方案

等待账户预算在新创建的账户中可用。变为可用后,您就可以激活它。

错误

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

原因

账户预算已激活。

解决方案

您可以调用 <budget_name>!GET_CONFIG 方法以查看激活时间戳:

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

错误

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

原因

您的账户尚不支持 Budgets 功能。

解决方案

Budgets 功能不适用于 Gov 区域的账户。对 Gov 区域的支持将在将来的版本中提供。

您无法创建自定义预算

有多种原因可能会导致您无法创建自定义预算。

错误

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

原因

您使用的角色没有创建自定义预算所需的权限。

解决方案

使用具有所需权限的角色。请参阅 创建自定义角色以创建预算

错误

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

原因

您将实参传递给构造函数方法以创建预算。

解决方案

请参阅 CREATE BUDGET 并编辑创建语句。

您无法激活自定义预算

错误

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

原因

您尝试针对自定义预算调用 ACTIVATE 方法。

解决方案

ACTIVATE 方法仅适用于账户预算。创建自定义预算后,使用 <budget_name>!SET_EMAIL_NOTIFICATIONS<budget_name>!SET_SPENDING_LIMIT 方法配置预算并开始接收通知电子邮件。

您无法在账户预算中调用方法

在账户预算上调用方法可能会失败的原因有很多种。

错误

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

原因

您尝试对账户预算调用以下任一方法:

解决方案

这些方法不适用于账户预算。账户预算监控账户中所有受支持对象,并且对象无法添加或移除。有关更多信息,请参阅 账户预算和自定义预算

错误

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

原因

在激活账户预算之前,您尝试对账户预算调用方法。

解决方案

激活账户预算

您无法在自定义预算中添加或移除对象

要在自定义预算中成功添加或移除对象,用于调用该方法的角色必须具有 所需的权限和角色

错误

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

原因

您用来调用实例方法的角色不具有从预算中添加(或移除)对象所需的权限。

解决方案

为用于调用该方法的角色授予所需的实例角色和权限。有关更多信息,请参阅 创建自定义角色以监控自定义预算

错误

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

原因

您尝试将对象添加到自定义预算中,但您用于调用该方法的角色没有所需的权限。

解决方案

若要从预算中添加(或移除)对象,用于调用该方法的角色必须具有对象的 APPLYBUDGET 权限。如果父对象是数据库或架构,则还必须具有对包含对象的数据库和架构的 USAGE 权限。

有关详细信息,请参阅列表: 所需的对象权限

错误

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

原因

您尝试为对象创建引用,而未在 SYSTEM$REFERENCE 语句中指定 PRIVILEGE 参数。

解决方案

使用对象的 APPLYBUDGET 权限创建引用。

错误

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.

原因

此错误消息有多种原因:

  • 您尝试使用内联 SYSTEM$REFERENCE 语句将 SNOWFLAKE 数据库添加到自定义预算。

  • 您没有创建引用所需的对象权限。将对象添加到预算中需要有效的引用。

解决方案

您无法为预算设置电子邮件通知

以下场景可以帮助您排查在调用 <budget_name>!SET_EMAIL_NOTIFICATIONS 方法时遇到的常见问题。

错误

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

原因

用于设置自定义预算电子邮件通知的角色不具备 ADMIN 实例角色。

解决方案

使用具备所需权限的角色。请参阅 SET_EMAIL_NOTIFICATIONS 的 访问控制要求

错误

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

原因

通知集成不存在。

解决方案

使用有效的通知集成。有关更多信息,请参阅 创建电子邮件通知集成。在 ALLOWED_RECIPIENTS 列表中包含接收预算通知的电子邮件地址。

错误

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>]

原因

电子邮件地址未包含在通知集成中。

解决方案

将电子邮件地址添加到通知集成中,或使用包含 ALLOWED_RECIPIENTS 列表中的所有电子邮件地址的通知集成。

错误

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.

原因

尝试添加的部分或全部电子邮件地址未经过验证。

解决方案

请参阅 第 1 步:验证电子邮件通知收件人的电子邮件地址

您无法成功调用 GET_SERVICE_TYPE_USAGE 方法

以下场景可以帮助您排查在调用 <budget_name>!GET_SERVICE_TYPE_USAGE 方法时遇到的常见问题。

错误

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))

原因

您使用无效实参或错误数量的实参调用了该方法。

解决方案

检查用于调用方法的实参是否有效,以及是否包含了所有必需的实参。

错误

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.

原因

TIME_DEPART 实参是无效字符串。

解决方案

在参考主题中,使用列出的有效值之一 TIME_DEPART 实参

错误

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

原因

USER_TIMEZONE 实参是无效字符串。

解决方案

使用有效的时区字符串。有关详细信息,请参阅 GET_SERVICE_TYPE_USAGE 使用说明

Budgets 功能不适用于您的账户

错误

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'.

原因

您的账户尚不支持 Budgets 功能。

解决方案

Budgets 功能不适用于 Gov 区域的账户。对 Gov 区域的支持将在将来的版本中提供。

语言: 中文