预算疑难解答¶
本主题介绍如何 监控预算以发现问题,并 针对常见问题提供了解决方案。
使用事件表监控预算¶
您可以使用 事件表 收集与预算相关的遥测数据。在 Snowflake 开始收集事件表中的数据后,您可以查询该表、创建流以跟踪更改,或者设置警报以在某些事件发生时发送通知。
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.
了解事件¶
下表描述了事件表中与预算事件对应的值,便于您关注相关事件。有关事件表结构的详细信息,请参阅 事件表列。
事件表列 |
字段 |
值 |
描述 |
|---|---|---|---|
|
|
|
预算实例的唯一 ID。 |
|
|
预算实例的完全限定名称。 |
|
|
|
|
所有预算遥测事件的常量标识符。 |
|
不适用 |
|
表示预算日志事件。 |
|
|
|
描述性事件名称。可能的值包括以下内容:
|
|
|
预算事件的严重性级别。 |
|
|
|
|
描述性事件消息,通常包括上下文详细信息,例如集成名称或操作。 |
使用以下示例可以更好地理解如何在事件表中识别预算事件。
- 查询:查找与账户内所有预算的传播相关的所有事件
- 查询:查找与特定预算相关的所有事件(例如,
MY_DB.SCH1.MY_BUDGET)
对特定问题进行故障排除¶
以下场景可帮助您排查在创建或编辑预算时可能出现的问题:
您无法激活账户预算¶
有多种原因可能会导致您无法激活账户预算:
错误 |
|
|---|---|
原因 |
如果您的 Snowflake 账户是新账户,则账户预算在您的账户中尚不可用。 |
解决方案 |
等待账户预算在新创建的账户中可用。变为可用后,您就可以激活它。 |
错误 |
|
|---|---|
原因 |
账户预算已激活。 |
解决方案 |
您可以调用 <budget_name>!GET_CONFIG 方法以查看激活时间戳: |
错误 |
|
|---|---|
原因 |
您的账户尚不支持 Budgets 功能。 |
解决方案 |
Budgets 功能不适用于 Gov 区域的账户。对 Gov 区域的支持将在将来的版本中提供。 |
您无法创建自定义预算¶
有多种原因可能会导致您无法创建自定义预算。
错误 |
|
|---|---|
原因 |
您使用的角色没有创建自定义预算所需的权限。 |
解决方案 |
使用具有所需权限的角色。请参阅 创建自定义角色以创建预算。 |
错误 |
|
|---|---|
原因 |
您将实参传递给构造函数方法以创建预算。 |
解决方案 |
请参阅 CREATE BUDGET 并编辑创建语句。 |
您无法激活自定义预算¶
错误 |
|
|---|---|
原因 |
您尝试针对自定义预算调用 ACTIVATE 方法。 |
解决方案 |
ACTIVATE 方法仅适用于账户预算。创建自定义预算后,使用 <budget_name>!SET_EMAIL_NOTIFICATIONS 和 <budget_name>!SET_SPENDING_LIMIT 方法配置预算并开始接收通知电子邮件。 |
您无法在账户预算中调用方法¶
在账户预算上调用方法可能会失败的原因有很多种。
错误 |
|
|---|---|
原因 |
您尝试对账户预算调用以下任一方法: |
解决方案 |
这些方法不适用于账户预算。账户预算监控账户中所有受支持对象,并且对象无法添加或移除。有关更多信息,请参阅 账户预算和自定义预算。 |
错误 |
|
|---|---|
原因 |
在激活账户预算之前,您尝试对账户预算调用方法。 |
解决方案 |
您无法在自定义预算中添加或移除对象¶
要在自定义预算中成功添加或移除对象,用于调用该方法的角色必须具有 所需的权限和角色。
错误 |
|
|---|---|
原因 |
您用来调用实例方法的角色不具有从预算中添加(或移除)对象所需的权限。 |
解决方案 |
为用于调用该方法的角色授予所需的实例角色和权限。有关更多信息,请参阅 创建自定义角色以监控自定义预算。 |
错误 |
|
|---|---|
原因 |
您尝试将对象添加到自定义预算中,但您用于调用该方法的角色没有所需的权限。 |
解决方案 |
若要从预算中添加(或移除)对象,用于调用该方法的角色必须具有对象的 APPLYBUDGET 权限。如果父对象是数据库或架构,则还必须具有对包含对象的数据库和架构的 USAGE 权限。 有关详细信息,请参阅列表: 所需的对象权限。 |
错误 |
|
|---|---|
原因 |
您尝试为对象创建引用,而未在 SYSTEM$REFERENCE 语句中指定 PRIVILEGE 参数。 |
解决方案 |
使用对象的 APPLYBUDGET 权限创建引用。 |
错误 |
|
|---|---|
原因 |
此错误消息有多种原因:
|
解决方案 |
|
您无法为预算设置电子邮件通知¶
以下场景可以帮助您排查在调用 <budget_name>!SET_EMAIL_NOTIFICATIONS 方法时遇到的常见问题。
错误 |
|
|---|---|
原因 |
用于设置自定义预算电子邮件通知的角色不具备 ADMIN 实例角色。 |
解决方案 |
使用具备所需权限的角色。请参阅 SET_EMAIL_NOTIFICATIONS 的 访问控制要求。 |
错误 |
|
|---|---|
原因 |
通知集成不存在。 |
解决方案 |
使用有效的通知集成。有关更多信息,请参阅 创建电子邮件通知集成。在 ALLOWED_RECIPIENTS 列表中包含接收预算通知的电子邮件地址。 |
错误 |
|
|---|---|
原因 |
电子邮件地址未包含在通知集成中。 |
解决方案 |
将电子邮件地址添加到通知集成中,或使用包含 ALLOWED_RECIPIENTS 列表中的所有电子邮件地址的通知集成。 |
错误 |
|
|---|---|
原因 |
尝试添加的部分或全部电子邮件地址未经过验证。 |
解决方案 |
请参阅 验证电子邮件通知收件人的电子邮件地址。 |
您无法成功调用 GET_SERVICE_TYPE_USAGE 方法¶
以下场景可以帮助您排查在调用 <budget_name>!GET_SERVICE_TYPE_USAGE 方法时遇到的常见问题。
错误 |
|
|---|---|
原因 |
您使用无效实参或错误数量的实参调用了该方法。 |
解决方案 |
检查用于调用方法的实参是否有效,以及是否包含了所有必需的实参。 |
错误 |
|
|---|---|
原因 |
TIME_DEPART 实参是无效字符串。 |
解决方案 |
在参考主题中,使用列出的有效值之一 TIME_DEPART 实参。 |
错误 |
|
|---|---|
原因 |
USER_TIMEZONE 实参是无效字符串。 |
解决方案 |
使用有效的时区字符串。有关详细信息,请参阅 GET_SERVICE_TYPE_USAGE 使用说明。 |
Budgets 功能不适用于您的账户¶
错误 |
|
|---|---|
原因 |
您的账户尚不支持 Budgets 功能。 |
解决方案 |
Budgets 功能不适用于 Gov 区域的账户。对 Gov 区域的支持将在将来的版本中提供。 |