2022_08 捆绑包

本主题介绍当月的以下行为变更(如果有):

  • 已弃用的功能。

  • 已启用的捆绑包变更。

  • 已实现的其他非捆绑包变更。

如果您对这些变更有任何疑问,请联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge)。

有关本月推出的新功能、增强功能和修复的详细信息,请参阅 2023 年 1 月

重要

除非另有说明,这些更改都位于 2022_08 捆绑包中,该捆绑包在 7.2 版本中默认启用。

本主题内容:

安全变更

编辑 SAML2 安全集成:强制执行 X.509 证书的有效日期

定义 SAML2 安全集成以启用单点登录时,安全管理员使用 SAML2_X509_CERT 参数指定 X.509 证书。

Snowflake 现在强制执行这些 X.509 证书的有效日期,以便过期的证书导致身份验证失败。具有尚未发生的 NotBefore 日期的证书也无法通过身份验证。不能禁用有效日期的执行。

之前:

Snowflake 不会检查 X.509 证书的有效期来验证它是否已过期,或者 NotBefore 日期是否尚未发生。

现在:

Snowflake 强制执行 X.509 证书的有效日期。如果当前日期不在证书的有效日期内,则身份验证失败。

SQL 变更 – 命令和函数

数据库和架构:如果导致密码策略和会话策略的悬空引用,则不允许删除或替换

与密码策略和会话策略相关的 DROP SCHEMA、DROP DATABASE、CREATE OR REPLACE DATABASE 以及 CREATE OR REPLACE SCHEMA 操作的行为已更改如下:

之前:

当在包含策略的 Snowflake 账户上设置策略或在同一账户中的用户上设置策略时,Snowflake 允许对包含该策略的架构/数据库执行 DROP 和 REPLACE 操作。

现在:

当在包含策略的 Snowflake 账户上设置策略或在同一账户中的用户上设置策略时,Snowflake 允许对包含该策略的架构/数据库执行 DROP 和 REPLACE 操作。

结果,这四个命令的行为发生了变化:

根据操作的不同,Snowflake 返回以下错误消息之一:

对用户设置的策略:

DROP DATABASE 和 CREATE OR REPLACE DATABASE:

Cannot drop database because policy 'MYDB.MYSCHEMA.POLICY1' is set on user 'JSMITH'. Unset the policy 'MYDB.MYSCHEMA.POLICY1' and then try the drop operation again.

DROP SCHEMA 和 CREATE OR REPLACE SCHEMA:

Cannot drop schema because policy 'MYDB.MYSCHEMA.POLICY1' is set on user 'JSMITH'. Unset the policy 'MYDB.MYSCHEMA.POLICY1' and then try the drop operation again.

针对账户设置的策略:

DROP DATABASE 和 CREATE OR REPLACE DATABASE:

Cannot drop database because policy 'MYDB.MYSCHEMA.POLICY1' is set on account 'MYACCOUNT'. Unset the policy 'MYDB.MYSCHEMA.POLICY1' and then try the drop operation again.

DROP SCHEMA 和 CREATE OR REPLACE SCHEMA:

Cannot drop schema because policy 'MYDB.MYSCHEMA.POLICY1' is set on account 'MYACC

SHOW FUNCTIONS 命令:输出中的新列

以下列已添加到 SHOW FUNCTIONS 命令的输出中:

列名称

数据类型

描述

IS_MEMOIZABLE

VARCHAR

指定函数是否是可记忆函数。

为尽量减少新列的影响,我们将此列添加为输出中的最后一列。

SHOW VIEWS 命令:输出中的新列

SHOW VIEWS 输出现在包括新 CHANGE_TRACKING 列。该列指示是否在视图上启用变更跟踪。

该列显示各个视图的以下值之一:

  • ON:变更跟踪已启用。您可以使用流或 SELECT 语句的 CHANGES 子句来查询此变更跟踪数据。

  • OFF:变更跟踪当前已禁用,但可以启用。

为了帮助限制此变更的影响,该列已添加为输出中的最后一列。

GET_DDL 函数:增加了对标签和策略的支持

GET_DDL 函数现在支持标签和策略,如下所示:

  • 当在表、视图或物化视图上设置标签时,调用 GET_DDL 函数的输出包括 CREATE 语句中的标签分配。

  • 当在架构或数据库上设置一个或多个标签时,调用 GET_DDL 函数的输出包括以下用于分配标签的语句:

    • 在数据库上设置标签时的 ALTER DATABASE 语句。

    • 在架构上设置标签时的 ALTER SCHEMA 语句。

    • 在数据库和架构上同时设置标签时的 ALTER DATABASE 语句和 ALTER SCHEMA 语句。

  • 在架构中创建标签并且在调用 GET_DDL 函数时指定相同的架构时,输出将包含用于生成标记的 CREATE OR REPLACE 语句。

    对于在数据库中创建的标签也是如此:调用 GET_DDL 函数时指定数据库包括 CREATE OR REPLACE 语句来生成标签。

  • 如果在表或视图上设置了行访问策略,或者在列上设置了掩码策略,则在表或视图上调用 GET_DDL 函数时会添加 WITH 关键字,以表明在 CREATE 语句中的表、视图或列上设置了该策略。

    注意,如果要手动创建表,那么在对表或视图设置行访问策略或对列设置掩码策略时,指定 WITH 关键字是可选的。

SQL 变更 – 使用情况视图和 Information Schema 视图/表函数

数据共享使用视图:视图中列的变更

DATA_SHARING_USAGE 架构(在 SNOWFLAKE 共享数据库)中的所有视图均已更改如下:

之前:

视图中 SNOWFLAKE_REGION 列中显示的数据显示为全小写的 <cloud> <region> in all lowercase (e.g. aws us_west_2)。这与 SHOW REGIONS 输出中 Snowflake 区域显示的值不一致。

受影响的视图:

现在:

在上面列出的视图中, SNOWFLAKE_REGION 列中的值现在显示为全大写的 <cloud>_<region>。这与 SHOW REGIONS 输出一致。

例如, AWS 中的 us_west_2 区域现在显示为 AWS_US_WEST_2

数据共享使用视图:视图中的新列

此公告于 2023 年 2 月 13 日添加。

REGION_GROUP 列已添加到 DATA_SHARING_USAGE 架构中的以下视图中:

为帮助更大限度地减少此添加的影响,已将 REGION_GROUP 列添加为输出中的最后一列。

ACCESS_HISTORY 视图 (Account Usage):视图中的新列

以下列已添加到 ACCESS_HISTORY 视图(在 ACCOUNT_USAGE 架构中):

  • object_modified_by_ddl

  • policies_referenced

为帮助更大限度地减少此添加的影响,已将这些列添加为输出中的最后一列。

请注意,这些列是占位符,将在即将发布的版本中填充。

FUNCTIONS 视图 (Information Schema):输出中的新列

以下列已添加到Information Schema中 FUNCTIONS 视图(在 INFORMATION_SCHEMA 架构):

列名称

数据类型

描述

IS_MEMOIZABLE

VARCHAR

指定函数是否是可记忆函数。

为帮助更大限度地减少此添加的影响,已将此列添加为视图中的最后一列。

TABLE_CONSTRAINTS 视图 (Account Usage):视图中的新列

以下新列已添加到 TABLE_CONSTRAINTS 视图(在 ACCOUNT_USAGE 架构中):

列名称

数据类型

描述

RELY

VARCHAR

在查询重写期间是否考虑 NOVALIDATE 模式下的约束条件。有关详细信息,请参阅 扩展的约束属性

USAGE_IN_CURRENCY_DAILY 视图 (Organization Usage):视图中的新列

USAGE_IN_CURRENCY_DAILY 视图(在 ORGANIZATION_USAGE 架构中)现在包括新 BALANCE_SOURCE 列。

列名称

数据类型

描述

BALANCE_SOURCE

VARCHAR

用于支付日常使用的资金来源。由于任意一天可能有多个来源,因此当同一天和使用类型有多个条目时,新列可提供额外的见解。

为了帮助限制此变更的影响,该列已添加为视图中的最后一列。

USERS 视图 (Account Usage):视图中的新列

USERS 视图(在 ACCOUNT_USAGE 架构中)已更新,以便以包含新 USER_ID 列。

数据共享变更

使用者:如果账户已撤销共享, SHOW 命令将返回错误

已撤销共享的使用者账户中的 SHOW <objects> 命令的行为已更改如下:

之前:

如果使用者账户安装了两个或多个包含相同提供者对象的共享,并且后来提供者仅从其中一个共享中撤销了该账户,则在剩余的已安装数据库或架构上的使用者账户中执行 SHOW 命令时,将返回数据。

例如,包含相同提供商对象的 share1share2 安装在 xy12345 使用者账户中,然后提供商从 share2 中移除该账户:

alter share share2 remove accounts = xy12345;
Copy

当在使用者账户中执行以下任何命令时,都会返回有效数据:

SHOW <objects> IN DATABASE <revoked_mounted_db>;

SHOW <objects> IN SCHEMA <revoked_mounted_db>.<schema>;
Copy
现在:

如果出现同样的场景,执行上述 SHOW 命令时会返回类似如下的错误:

SQL compilation error: <details of the specific error>.

复制变更

网络策略:具有复制和故障转移/故障恢复的策略的悬空引用

复制和网络策略以及故障转移/故障恢复和网络策略的行为已更改如下:

之前:

通过网络策略及其引用(即对主账户和主账户中的用户的分配):

  • 当存在用户级网络策略时,在复制/故障转移组中指定 USERS 和 NETWORK POLICIES。

  • 当仅存在账户级网络策略时,在复制/故障转移组中指定 NETWORK POLICIES。

  • 即使结果是目标账户中的悬空引用,也会发生复制和故障转移/故障恢复。

悬空引用是指辅助账户中的对象引用了同一个账户中不存在的对象。例如:

  • 辅助账户中的用户/用户名引用不在辅助账户中的网络策略。当将网络策略分配给主账户中的用户,并且复制/故障转移组指定 USERS 而不是 NETWORK POLICIES 时,就会出现此场景。

  • 网络策略已附加到主账户,并且复制/故障转移组不包括 NETWORK POLICIES。

现在:

当前的行为已更改如下:

  • 当存在用户级网络策略时,在复制/故障转移组中指定 ACCOUNT PARAMETERS、USERS 和 NETWORK POLICIES。

  • 当仅存在账户级网络策略时,在复制/故障转移组中指定 ACCOUNT PARAMETERS 和 NETWORK POLICIES。

  • 如果结果为悬空引用,则辅助账户中的复制和故障转移/故障恢复将失败。

例如,如果主账户具有账户级网络策略集和用户级网络策略集,则将在目标账户中为账户级参数和用户创建悬空引用:

Dangling references in the snapshot. Correct the errors before refreshing again. The following references are missing (referred entity <- [referring entities]):

ACCOUNT PARAMETERS <- [NETWORK POLICIES]. Add ACCOUNT PARAMETER into the replication group to fix it.

NETWORK_POLICY 'MYACCOUNT.P2' <- [USER 'MYACCOUNT.USERNAME']
Copy

否则,错误消息将指定账户参数语句或用户语句,具体取决于复制组的配置方式以及目标账户中的结果。

复制组:将账户对象限制为单个组的成员资格

账户复制支持在复制或故障转移组中复制账户对象。账户对象可以包括账户参数、角色、安全对象和用户。有关受支持对象的完整列表,请参阅 复制对象

当前,如果某个账户没有包含账户对象类型的故障转移组,则不同的账户对象类型可以包含在多个复制组中。此行为已更改,如下所示:

之前:

账户对象类型可以包含在多个复制组中。

现在:

账户对象类型仅限于一个复制组。

复制组:目标账户中的只读账户参数

当账户对象类型包含在复制或故障转移组中时,该对象类型在目标账户中是只读的。例如,如果将角色复制到目标账户,则无法在目标账户中创建或修改角色。

账户参数可以包含在复制或故障转移组中,以便复制到目标账户。一些参数(例如 STATEMENT_TIMEOUT_IN_SECONDS)可以在多个级别上设置(例如在账户级别和每个用户级别)。账户参数复制仅复制参数的账户级设置。

账户参数复制的行为已更改如下:

之前:

如果 ACCOUNT PARAMETERS 包含在复制或故障转移组的 OBJECT_TYPES 列表中,可以修改目标账户中的辅助账户级参数。

现在:

如果复制或故障转移组的 OBJECT_TYPES 列表中包含 ACCOUNT PARAMETERS,目标账户中的辅助账户级参数是只读的。

SHOW REPLICATION GROUPS 命令:更改输出

SHOW REPLICATION GROUPS 在其输出中包含 next_scheduled_refresh 列,该列显示具有 复制计划 的辅助复制或故障转移组的下一次计划刷新的日期和时间。如果辅助复制或具有复制计划的故障转移组不在当前区域,则此列为 NULL。

此行为已更改,如下所示:

之前:

对于复制计划不在当前区域的辅助复制或故障转移组, next_scheduled_refresh 列为 NULL。

现在:

next_scheduled_refresh 列包括具有复制计划的所有辅助复制和故障转移组的下一次计划刷新的日期和时间。

语言: 中文