预算故障排除¶
本主题内容:
以下场景可帮助您排查在创建或编辑预算时可能出现的问题:
您无法激活账户预算¶
有多种原因可能会导致您无法激活账户预算:
错误 |
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();
|
错误 |
-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.
|
---|---|
原因 |
此错误消息有多种原因:
|
解决方案 |
|
您无法为预算设置电子邮件通知¶
以下场景可以帮助您排查在调用 <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.
|
---|---|
原因 |
尝试添加的部分或全部电子邮件地址未经过验证。 |
解决方案 |
您无法成功调用 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 区域的支持将在将来的版本中提供。 |