升级应用程序¶
本主题提供有关升级 Snowflake Native App 的信息。
关于升级¶
Snowflake Native App Framework 允许提供商将应用程序升级到新版本或补丁。要了解升级如何融入开发应用程序新版本或补丁的整体工作流程,请参阅 更新应用程序的工作流程。
提供商可以通过在应用程序包上设置发布指令,将应用程序升级到新版本或补丁。修改发布指令后,Snowflake 会自动将当前版本应用程序的所有已安装实例升级到发布指令指定的版本。
当提供商启动升级时,Snowflake 会将每个要升级的应用程序添加到队列中。每个应用程序都会根据可用资源进行升级。在所有已安装的应用程序版本中,升级过程可能需要一段时间才能完成。为了加快升级过程,使用者还可以在有新版本或补丁时手动启动应用程序升级。
备注
在应用程序的升级过程开始后,使用者不能再手动升级应用程序。
升级工作流程¶
提供商使用以下工作流程升级已安装的应用程序:
开始升级¶
当提供商更新应用程序包的发布指令(默认或自定义)以指向新版本或补丁时,升级过程将自动启动。使用 ALTER APPLICATION PACKAGE ...RELEASE DIRECTIVE 命令来设置默认发布指令,如以下示例所示:
ALTER APPLICATION PACKAGE my_application_package SET DEFAULT RELEASE DIRECTIVE
VERSION = v2
PATCH = 0;
此命令将默认的发布指令设置为版本 v2
和补丁 0
。
ALTER APPLICATION PACKAGE my_application_package
SET RELEASE DIRECTIVE my_custom_release_directive
ACCOUNTS = ( USER_ACCOUNT.snowflakecomputing.com )
VERSION = v2
PATCH = 0;
此命令会为账户 v2
.snowflakecomputing.cn 将名为 my_custom_release_directive
的自定义发布指令设置为版本 0
和补丁 USER_ACCOUNT。
有关更多信息,请参阅 为应用程序设置发布指令。
手动升级应用程序¶
手动升级允许使用者比自动升级更快地升级已安装的应用程序。当有新版本或补丁可用时,提供商可能会要求使用者执行手动升级。
使用者通过运行 ALTER APPLICATION 执行手动升级。此命令使用应用程序包中指定的发布指令,启动应用程序已安装版本或补丁的升级。
要将已安装的 Snowflake Native App 升级到最新的可用版本,使用者可以使用 ALTER APPLICATION 命令的 UPGRADE 子句来修改应用程序对象:
ALTER APPLICATION <name> UPGRADE
跨区域升级应用程序¶
升级应用程序后,在执行对远程区域的刷新之前,对使用者账户中已安装 Snowflake Native App 的更改可能不可见。
您可以使用 数据共享使用情况 架构中的 APPLICATION_STATE 视图 来监控状态。如果在升级后,在第一次刷新后超过一天仍未完成升级,则刷新过程可能存在问题。请联系 ` Snowflake 支持部门 `_。
如果提供商使用 Cross-Cloud Auto-Fulfillment 发布 Snowflake Native App,则自动升级可能需要一段时间才能升级,具体取决于多个因素,其中包括:
刷新计划的值。
应用程序的已安装实例数。
部署应用程序的区域数。
如果升级包含需要在远程区域中升级的紧急修复程序,则提供商可以将列表的刷新频率降低为较小的值。有关设置账户级别刷新频率的信息,请参阅 监控和管理自动履行设置 <https://other-docs.snowflake.com/en/collaboration/provider-listings-auto-fulfillment#label-listings-monitor-manage-ccaf>
。
小心
降低刷新频率可能增加与复制相关的成本。
升级状态¶
在升级过程中,应用程序会经过几个不同的状态。下图显示了从上一个版本 v1 升级到新版本 v2 时可能出现的状态。
备注
虽然此图表显示的是版本升级,但它也适用于补丁升级。

下表显示了应用程序包所在区域内的应用程序升级过程的每个阶段:
暂存区 |
描述 |
|
---|---|---|
1 |
App 是否处于禁用状态? |
如果应用程序处于禁用状态,则无法升级。 |
2 |
将发布指令设置为 v2.0 |
提供商将发布指令设置为 v2.0。 |
3 |
符合升级条件 |
Snowflake 执行检查以验证应用是否符合升级条件。这些检查包括验证应用程序是否未处于禁用状态、应用程序包是否可用、版本和补丁是否符合升级条件、使用者账户是否有效等。 |
4 |
是否要获取升级时段? |
根据要升级的应用程序数量、使用者账户数量等,他们可能必须等待一段时间才能开始升级过程。 |
5 |
安装脚本是否成功运行? |
升级开始时,Snowflake 会运行安装脚本。如果发生任何未捕获的错误,安装脚本将停止执行。Snowflake 会根据配置的重试次数再次将应用程序排入升级队列。 |
6 |
版本是否可更新? |
Snowflake 检查升级是否适合版本或补丁。如果升级是针对某个版本的,Snowflake 会执行其他检查,并等待旧版本应用程序的所有作业完成。 |
下表显示了部署到远程区域的应用程序的升级过程:
暂存区 |
描述 |
|
---|---|---|
7 |
在远程区域复制发布指令 v2.0 |
当提供商为部署到远程区域的应用程序设置发布指令时,该发布指令将传播到部署在远程区域中的应用程序包。 |
8 |
v2.0 的活动区域是什么? |
当主要区域中的大多数应用程序都已升级后,Snowflake 会向远程区域发送消息以开始应用程序升级。 |
9 |
开始升级过程 |
按照上表所述开始应用程序的升级过程。 |
下表描述了升级过程的每种可能状态:
状态 |
描述 |
---|---|
DISABLED |
应用程序处于禁用状态,不符合升级条件。 |
QUEUED |
根据应用程序和使用者账户的数量,应用程序处于待升级队列中。 |
UPGRADING |
应用程序正在升级过程中。 |
COMPLETED |
应用程序已成功升级。 |
QUEUED_RETRY |
安装脚本或其他检查失败,应用程序返回到升级队列。 |
FAILED |
应用程序升级失败。升级可能会在提供商端失败,例如由于安装脚本中的错误。如果应用程序处于禁用状态、使用者账户处于非活动状态等,升级也可能在使用者端失败。 |
监控升级状态¶
要查看应用程序的升级状态,请使用 APPLICATION_STATE 视图。
例如,在您更新了默认发布指令并希望查看所有应用程序是否已达到目标版本的情况下。要查找尚未完成升级的应用程序实例,请使用以下示例中的查询:
SELECT * FROM snowflake.data_sharing_usage.APPLICATION_STATE
此视图包括特定于升级的列,包括升级状态和部署应用程序的区域。有关升级状态的信息,请参阅 升级状态。
排查升级问题¶
Snowflake Native App Framework 提供了多种排查升级问题的方法:
识别升级错误¶
使用者可以使用 DESCRIBE APPLICATION 命令查看与失败升级相关的错误消息。此命令可让您深入了解升级过程中发生的错误。
提供商可以使用 APPLICATION_STATE 视图 来查看失败升级的错误消息。使用此视图,提供商可以诊断特定应用程序的问题。有关更多信息,请参阅 监控升级状态。
使用日志记录和事件跟踪¶
如果为应用配置了 日志记录和事件跟踪,提供商可以查询事件表以诊断应用升级的问题。
有关更多信息,请参阅 查看事件表中的日志和事件。
监控应用程序服务的状态¶
要查看应用程序内计算池或服务的状态信息,使用者可以使用以下系统函数:
使用者可以将这些信息共享给提供商。提供商也可以配置事件共享以返回此信息。
处于禁用状态的应用程序¶
当使用者账户中安装的应用程序处于禁用状态时,它将不再可用。安装在使用者账户中的应用程序可能会因多种原因而处于禁用状态的,其中包括:
应用程序包的问题
已安装应用程序的问题
使用者账户的问题
提供商和使用者都应避免应用程序长时间处于禁用状态的情况。处于禁用状态的应用程序可能无法使用,必须重新安装
升级处于禁用状态的应用程序¶
处于禁用状态的应用程序不是正常升级过程的一部分,无法升级。如果重新启用处于禁用状态的应用程序,它会自动升级到发布指令的版本和补丁。但是,如果版本或补丁不再可用,则应用程序无法升级,必须重新安装。
例如,如果处于禁用状态的应用程序为版本 v1
,但应用程序包中的当前版本和之前版本分别为 v2
和 v3
,则该应用程序无法升级并且无法使用。
可能会禁用应用程序的原因¶
您可以查看 APPLICATION_STATE 视图 的 DISABLEMENT_REASONS 列以了解禁用应用程序的原因。下表列出了 DISABLEMENT_REASONS 列的可能值:
值 |
状态描述 |
是否可恢复? |
---|---|---|
MANUALLY_DISABLED |
该应用程序已被 Snowflake 禁用 |
是。要重新启用该应用程序,请联系 Snowflake 支持部门。 |
ACCOUNT_INACTIVE |
该账户因锁定或暂停而变处于非活动状态,导致应用程序无法使用。在这种状态下,使用者无法在其账户中执行任何 SQL 查询,并且应用程序无法升级。 |
是。如果账户锁定或暂停被解除,该应用程序将自动重新启用 |
PACKAGE_VERSION_IS_MISSING |
提供商已将该应用的应用程序包版本删除。该应用程序不再可用,必须从有效的列表或应用程序包中删除并重新安装。 |
没有相同的名字。 |
CMK_ACCESS_DENIED |
使用者自己管理加密密钥(ENCRYPT_USE_CMK_KMS 已启用),Snowflake 无法访问此密钥。 |
是。要重新启用应用程序,请确保云提供商配置以检索 CMK 是正确的,并且 Snowflake 可以访问该密钥。 |
LISTING_ACCESS_REVOKED |
用于创建应用程序的列表不再可用。此状态的可能原因包括:
|
可能。可恢复性取决于撤销访问权限的原因。 例如,如果删除的是列表,则无法恢复。如果使用者账户被手动从专用列表中移除,可以恢复对该列表和应用程序的访问权限。 |
LISTING_TRIAL_USAGE_EXCEEDED |
应用程序超出了基于使用情况的试用列表的使用限制。 |
否 |
LISTING_PAYMENT_REQUIRED |
用于安装应用程序的列表是付费列表,并且需要支付费用来获取更多使用量。 |
是。使用者必须正确设置应用程序的支付方式。 |
LISTING_TRIAL_TIME_EXCEEDED |
该应用程序超过了试用期限。 |
否 |
APPLICATION_PACKAGE_NOT_AVAILABLE |
用于创建应用程序的应用程序包不再存在。提供商可能已删除了相应的应用程序包。 |
否 |
APPLICATION_PACKAGE_DISABLED |
用于创建应用程序的应用程序包被 Snowflake 禁用。 |
是。如果 Snowflake 重新启用应用程序包,则应用程序将重新启用。 |
APPLICATION_SUSPENDED |
该应用程序的资源(例如,任务、服务和计算池)因应用程序被禁用而处于暂停状态。 暂停的对象保持暂停状态,直到应用程序重新启用,并且没有其他原因导致应用程序被禁用。 |
是 |
APPLICATION_SUSPEND_RESUME_IN_PROGRESS |
应用程序资源(例如任务、服务和计算池)当前正在恢复。 |
是 |