ALTER SHARE¶
修改现有 :doc:` 共享 </user-guide/data-sharing-intro>` 的属性:
在账户列表中添加或移除账户。
设置与之共享相应共享数据库的新账户列表。
修改其他属性。有关参数的详细信息,请参阅 参数。
语法¶
ALTER SHARE [ IF EXISTS ] <name> { ADD | REMOVE } ACCOUNTS = <consumer_account> [ , <consumer_account> , ... ]
[ SHARE_RESTRICTIONS = { TRUE | FALSE } ]
ALTER SHARE [ IF EXISTS ] <name> SET { [ ACCOUNTS = <consumer_account> [ , <consumer_account> ... ] ]
[ COMMENT = '<string_literal>' ] }
ALTER SHARE [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER SHARE <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER SHARE [ IF EXISTS ] <name> UNSET COMMENT
参数¶
name为要更改的共享指定标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
ADD | REMOVE ACCOUNTS = consumer_account [ , consumer_account , ... ]指定要在共享的账户列表中添加或移除的账户名称:
将账户添加到列表中已有的共享时没有任何效果。
移除已导入共享数据库的账户会立即撤消账户对数据库的访问权限。如果账户随后添加回共享,则账户必须重新创建数据库,才能再次使用该数据库。
从共享账户列表中未包含的共享中移除账户时没有效果。
此参数会添加到共享的现有账户列表(或从中移除)。如果您要替换整个账户列表,请改用
SET。SHARE_RESTRICTIONS = { TRUE | FALSE }FALSE:Standard 或 Enterprise 使用者账户可以添加到属于业务关键提供商账户的共享。TRUE:Standard 或 Enterprise 使用者账户不能添加到属于业务关键提供商账户的共享。- 默认值:
TRUE
重要
每次将新的非业务关键使用者账户添加到属于业务关键提供商的共享时,都必须设置该参数。有关更多信息,请参阅 启用从业务关键账户到非业务关键账户的共享。
SET...
ACCOUNTS = consumer_account [ , consumer_account ... ]指定要 替换 共享的所有先前账户的账户。要在列表中添加/删除单个账户,请改用
ADD | REMOVE。
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]指定 标签 名称和标签字符串值。
标签值始终为字符串,标签值的最大字符数为 256。
有关在语句中指定标签的信息,请参阅 Tag quotas。
COMMENT = 'string'为共享添加注释或覆盖现有注释。
UNSET ...为共享指定一个或多个要取消设置的属性/参数,这会将它们重置回默认值:
TAG tag_name [ , tag_name ... ]COMMENT
使用说明¶
要更改共享,需要下面其中一项权限:
向创建共享的角色授予的 OWNERSHIP 权限。
MANAGE SHARE TARGET 权限确定哪些角色可以添加或移除共享中的账户。只有授予 MANAGE SHARE TARGET 的角色才能添加或移除共享账户访问权限。
关键字
ACCOUNT和ACCOUNTS均受支持,可以互换使用。关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
示例¶
将两个账户添加到名为 sales_s 的现有共享:
ALTER SHARE sales_s ADD ACCOUNTS=<orgname.accountname1>,<orgname.accountname2>; +----------------------------------+ | status | |----------------------------------| | Statement executed successfully. | +----------------------------------+Copy
从 sales_s 中移除账户 <orgname.accountname>;:
ALTER SHARE sales_s REMOVE ACCOUNT=<orgname.accountname>; +----------------------------------+ | status | |----------------------------------| | Statement executed successfully. | +----------------------------------+Copy
向角色授予 MANAGE SHARE TARGET,并使用该角色管理共享目标:
GRANT MANAGE SHARE TARGET ON ACCOUNT TO ROLE <role_name>;
GRANT ROLE <role_name> TO USER <user_name>;
USE ROLE <role_name>;
ALTER SHARE <data_share_name> ADD ACCOUNTS = <orgname.accountname1>,<orgname.accountname2>;
为 sales_s 设置新注释:
ALTER SHARE sales_s SET COMMENT='This share contains sales data for 2017'; +----------------------------------+ | status | |----------------------------------| | Statement executed successfully. | +----------------------------------+Copy