ALTER ACCOUNT¶
修改账户。ALTER ACCOUNT 命令有两个用途:
允许账户管理员(即具有 ACCOUNTADMIN 角色的用户)修改 参数 以及账户级别的其他设置。例如,账户管理员可以为账户设置资源监视器或启用安全功能。对于这些操作,账户管理员从正在修改的账户执行 ALTER ACCOUNT。
允许 组织管理员 修改账户的核心特征。例如,组织管理员可以重命名账户。对于这些操作,组织管理员从与正在修改的账户不同的账户执行 ALTER ACCOUNT。
备注
ALTER ACCOUNT 主要由账户管理员和组织管理员执行,具有 SECURITYADMIN 角色的用户可以使用它来为账户设置网络策略。
语法¶
ALTER ACCOUNT 的语法因修改 当前账户 还是 其他账户 而异。
更改当前账户¶
ALTER ACCOUNT SET { [ accountParams ] | [ objectParams ] | [ sessionParams ] }
ALTER ACCOUNT UNSET <param_name> [ , ... ]
ALTER ACCOUNT SET RESOURCE_MONITOR = <monitor_name>
ALTER ACCOUNT ADD ORGANIZATION USER GROUP <group_name>
ALTER ACCOUNT REMOVE ORGANIZATION USER GROUP <group_name>
ALTER ACCOUNT SET { AUTHENTICATION | SESSION } POLICY <policy_name> [ { FOR ALL PERSON USERS | FOR ALL SERVICE USERS } ] [ FORCE ]
ALTER ACCOUNT UNSET { AUTHENTICATION | SESSION } POLICY [ { FOR ALL PERSON USERS | FOR ALL SERVICE USERS } ]
ALTER ACCOUNT SET FEATURE POLICY <policy_name> FOR ALL APPLICATIONS [ FORCE ]
ALTER ACCOUNT UNSET FEATURE POLICY FOR ALL APPLICATIONS
ALTER ACCOUNT SET { PACKAGES | PASSWORD } POLICY <policy_name> [ FORCE ]
ALTER ACCOUNT UNSET { PACKAGES | PASSWORD } POLICY
ALTER ACCOUNT SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER ACCOUNT UNSET TAG <tag_name> [ , <tag_name> ... ]
其中:
accountParams ::= ALLOW_ID_TOKEN = TRUE | FALSE CLIENT_ENCRYPTION_KEY_SIZE = <integer> CORTEX_ENABLED_CROSS_REGION = { 'DISABLED' | 'ANY_REGION' | '<list_of_regions>' } DISABLE_USER_PRIVILEGE_GRANTS = TRUE | FALSE ENABLE_EGRESS_COST_OPTIMIZER = TRUE | FALSE ENABLE_INTERNAL_STAGES_PRIVATELINK = TRUE | FALSE ENFORCE_NETWORK_RULES_FOR_INTERNAL_STAGES = TRUE | FALSE ENABLE_NOTEBOOK_CREATION_IN_PERSONAL_DB = TRUE | FALSE EXTERNAL_OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST = TRUE | FALSE INITIAL_REPLICATION_SIZE_LIMIT_IN_TB = <num> LISTING_AUTO_FULFILLMENT_REPLICATION_REFRESH_SCHEDULE = <schedule> LLM_INFERENCE_PARSE_DOCUMENT_PRESIGNED_URL_EXPIRY_SECONDS = <integer> NETWORK_POLICY = <string> OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST = TRUE | FALSE PERIODIC_DATA_REKEYING = TRUE | FALSE READ_CONSISTENCY_MODE = 'SESSION' | 'GLOBAL' REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATION = TRUE | FALSE REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_OPERATION = TRUE | FALSE SAML_IDENTITY_PROVIDER = <json_object> SQL_TRACE_QUERY_TEXT = ON | OFF SSO_LOGIN_PAGE = TRUE | FALSE USE_WORKSPACES_FOR_SQL = { 'always' | 'never' }objectParams ::= CORTEX_MODELS_ALLOWLIST = {'<list_of_models>' | 'ALL' | 'NONE'} DATA_RETENTION_TIME_IN_DAYS = <integer> DEFAULT_STREAMLIT_NOTEBOOK_WAREHOUSE = <warehouse_name> ENABLE_DATA_COMPACTION = { TRUE | FALSE } ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = TRUE | FALSE ENABLE_UNREDACTED_SECURE_OBJECT_ERROR = TRUE | FALSE MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> EXTERNAL_VOLUME = <external_volume_name> CATALOG = <catalog_integration_name> DEFAULT_DDL_COLLATION = '<collation_specification>' DEFAULT_NOTEBOOK_COMPUTE_POOL_CPU = <compute_pool_name> DEFAULT_NOTEBOOK_COMPUTE_POOL_GPU = <compute_pool_name> ENABLE_TAG_PROPAGATION_EVENT_LOGGING = TRUE | FALSE MAX_CONCURRENCY_LEVEL = <num> NETWORK_POLICY = <string> OBJECT_VISIBILITY = { <object_visibility_spec> | PRIVILEGED } PIPE_EXECUTION_PAUSED = TRUE | FALSE PREVENT_UNLOAD_TO_INLINE_URL = TRUE | FALSE PREVENT_UNLOAD_TO_INTERNAL_STAGES = TRUE | FALSE REPLACE_INVALID_CHARACTERS = TRUE | FALSE STATEMENT_QUEUED_TIMEOUT_IN_SECONDS = <num> STATEMENT_TIMEOUT_IN_SECONDS = <num> STORAGE_SERIALIZATION_POLICY = COMPATIBLE | OPTIMIZED CATALOG_SYNC = '<snowflake_open_catalog_integration_name>' BASE_LOCATION_PREFIX = '<string>'sessionParams ::= ABORT_DETACHED_QUERY = TRUE | FALSE AUTOCOMMIT = TRUE | FALSE BINARY_INPUT_FORMAT = <string> BINARY_OUTPUT_FORMAT = <string> DATE_INPUT_FORMAT = <string> DATE_OUTPUT_FORMAT = <string> DEFAULT_NULL_ORDERING = <string> ENABLE_GET_DDL_USE_DATA_TYPE_ALIAS = TRUE | FALSE ERROR_ON_NONDETERMINISTIC_MERGE = TRUE | FALSE ERROR_ON_NONDETERMINISTIC_UPDATE = TRUE | FALSE JSON_INDENT = <num> LOCK_TIMEOUT = <num> QUERY_TAG = <string> ROWS_PER_RESULTSET = <num> S3_STAGE_VPCE_DNS_NAME = <string> SEARCH_PATH = <string> SIMULATED_DATA_SHARING_CONSUMER = <string> STATEMENT_TIMEOUT_IN_SECONDS = <num> STRICT_JSON_OUTPUT = TRUE | FALSE TIMESTAMP_DAY_IS_ALWAYS_24H = TRUE | FALSE TIMESTAMP_INPUT_FORMAT = <string> TIMESTAMP_LTZ_OUTPUT_FORMAT = <string> TIMESTAMP_NTZ_OUTPUT_FORMAT = <string> TIMESTAMP_OUTPUT_FORMAT = <string> TIMESTAMP_TYPE_MAPPING = <string> TIMESTAMP_TZ_OUTPUT_FORMAT = <string> TIMEZONE = <string> TIME_INPUT_FORMAT = <string> TIME_OUTPUT_FORMAT = <string> TRANSACTION_DEFAULT_ISOLATION_LEVEL = <string> TWO_DIGIT_CENTURY_START = <num> UNSUPPORTED_DDL_ACTION = <string> USE_CACHED_RESULT = TRUE | FALSE WEEK_OF_YEAR_POLICY = <num> WEEK_START = <num>
备注
为了便于阅读,此处不包括可为账户设置的会话参数的完整列表。有关所有会话参数的完整列表及其说明,以及账户和对象参数,请参阅 参数。
更改其他账户¶
ALTER ACCOUNT <name> SET IS_ORG_ADMIN = { TRUE | FALSE }
ALTER ACCOUNT <name> RENAME TO <new_name> [ SAVE_OLD_URL = { TRUE | FALSE } ]
ALTER ACCOUNT <name> DROP OLD URL
ALTER ACCOUNT <name> DROP OLD ORGANIZATION URL
更改当前账户的参数¶
修改当前账户时,请使用以下参数。
有关在账户级别设置参数的更多信息,请参阅 参数管理。有关特定参数的详细信息,请参阅 参数。
SET ...Specifies one (or more) account, session, object parameters, and object properties to set for your account (separated by blank spaces, commas, or new lines):
任何其他用户都无法更改的账户参数。
在账户级别设置的会话和对象参数仅用作默认值,可以由其他用户更改。
有关您可以为账户设置的参数的描述,请参阅 参数。
OBJECT_VISIBILITY = {object_visibility_spec | PRIVILEGED }-
指定账户中对象的可见性,该可见性控制 对象的可发现性,并允许没有显式访问权限的用户查找对象并请求访问权限。
一份 YAML 规范,用于描述以下格式之一的可见性:
$$ organization_targets: - all_accounts_including_external $$
Or
$$ organization_targets: - account: <account_name_1> - account: <account_name_2> - ... - organization_user_group: <org_user_group_1> - organization_user_group: <org_user_group_2> $$
在上面的语法中:
all_accounts_including_external:选择使用 时默认使用的角色和仓库。指定组织中所有账户中的所有用户都可以看到该对象。这包括组织内的所有账户,甚至包含可能已向外部方开放访问权限的账户,例如 阅读者账户。account: account_name:选择使用 时默认使用的角色和仓库。指定账户中的所有用户均可查看该对象。您可以指定多个账户。请注意,account是账户名称,而不是账户定位器。您必须仅指定账户名称,不包括组织名称。09-22organization_user_group: org_user_group:选择使用 时默认使用的角色和仓库。指定 组织用户组 可在 已导入该用户组的所有组织账户 中查看该对象。
PRIVILEGED:选择使用 时默认使用的角色和仓库。指定仅当前账户中已被显式授予该对象权限的角色,方可查看到此对象。这是 Snowflake 中的默认行为。
有关示例,请参阅 使数据库对象在 Universal Search 中可被发现。
默认:
'PRIVILEGED'
UNSET ...为您的账户指定一个(或多个)要取消设置的账户、会话和对象参数,这会将它们重置为系统默认值。
您可以使用单个 ALTER 语句重置多个属性;但是,每个属性 必须 用逗号分隔。重置属性时,请仅指定名称;指定属性的值将返回错误。
SET RESOURCE_MONITOR resource_monitor_name特殊参数,用于指定资源监视器的名称,而资源监视器则用于控制账户中创建的所有虚拟仓库。
重要
在账户级别设置资源监视器不会影响 Snowflake 提供的、Snowflake 用于 Snowpipe、自动重聚类或物化视图的任何仓库。这些仓库消耗的 Credit 不会计入账户级资源监视器的信用配额。
有关更多详细信息,请参阅 使用资源监视器。
ADD ORGANIZATION USER GROUP group_name-
将 组织用户组 导入到账户。群组中的组织用户将作为用户对象添加到账户中。
REMOVE ORGANIZATION USER GROUP group_name-
从账户中移除 组织用户组。
SET { AUTHENTICATION | SESSION } POLICY policy_name [ { FOR ALL PERSON USERS | FOR ALL SERVICE USERS } ] [ FORCE ]Specifies the authentication policy or session policy for the account.
FOR ALL PERSON USERS子句将策略应用于 TYPE 属性设置为 NULL 或 PERSON 的用户。FOR ALL SERVICE USERS子句将策略应用于 TYPE 属性设置为 SERVICE 或 LEGACY_SERVICE 的用户。如果未指定
FOR ALL SERVICE USERS或FOR ALL PERSON USERS,则策略适用于账户中的所有用户。若为特定用户或特定用户类型显式设置策略,则该策略将优先于应用于
FOR ALL SERVICE USERS或FOR ALL PERSON USERS的策略。如果指定 FORCE,则您对特定用户或特定用户类型设置的策略将被替换。如果您不想取消设置策略,可以使用此选项。
If a policy is already set on the current account, you can use FORCE to set the policy without having to unset the existing policy first.
SET FEATURE POLICY policy_name FOR ALL APPLICATIONS [ FORCE ]指定要为账户设置的功能策略。如果已经在当前账户上设置了功能策略,则可以使用 FORCE 来设置功能策略,而不必先取消设置功能策略。
UNSET FEATURE POLICY FOR ALL APPLICATIONS取消设置账户的功能策略。
If you already set a policy on the current account, then you can specify FORCE to set the policy without needing to unset an existing policy first.
UNSET { AUTHENTICATION | SESSION } POLICY [ FOR ALL PERSON USERS | FOR ALL SERVICE USERS ]Unsets the authentication policy or session policy for the account.
指定
FOR ALL SERVICE USERS或FOR ALL PERSON USERS可缩小命令的作用范围;该策略仅从指定的用户类型中移除,而非从账户的所有用户中移除。SET PACKAGES | PASSWORD POLICY policy_name [ FORCE ]-
If you already set a policy on the current account, then you can specify FORCE to set the policy without needing to unset an existing policy first.
UNSET { PACKAGES | PASSWORD } POLICY
更改其他账户的参数¶
使用当前账户修改其他账户时,请使用以下参数。只有 组织管理员 能够使用这些参数。
name指定正在修改的账户的名称。
SET指定要为该账户设置的账户属性。
IS_ORG_ADMIN = { TRUE | FALSE }设置账户属性,用于确定是否在账户中启用 ORGADMIN 角色。
备注
正在逐步取消在常规账户中使用 ORGADMIN 角色。组织管理员应使用 组织账户 来完成组织级任务。
要为账户启用 ORGADMIN 角色,请指定
SET IS_ORG_ADMIN = TRUE。您无法将当前账户的属性设置为
FALSE。作为解决方法,请在另一账户中启用该角色,然后在执行 ALTER ACCOUNT 命令之前切换到该账户。默认情况下,最多可以在 8 个账户中启用 ORGADMIN 角色。如果组织需要更多具有 ORGADMIN 角色的账户,请联系 Snowflake 支持部门。
RENAME TO new_name将账户名称更改为指定名称。
组织管理员不能在登录账户期间重命名该账户,而应当先登录其他账户,然后再执行 ALTER ACCOUNT 命令。如果您的组织仅由一个账户组成,且该账户需要重命名,请联系 Snowflake 支持部门。
SAVE_OLD_URL = { TRUE | FALSE }与
RENAME TO配合使用的可选参数可保留在重命名之前用于访问 Snowflake 的 账户 URL。默认情况下,Snowflake 会保存原始 URL,这意味着您可以使用旧 URL 或包含新账户名称的 URL 访问该账户。如果设置为FALSE,则必须使用新 URL 才能访问该账户。- 默认值:
TRUE
DROP OLD URL移除已重命名的账户中的原始 账户 URL。删除旧 URL 后,必须使用包含新账户名称的 URL 才能访问该账户。
如果一个账户因为被转移到另一个组织、组织已被重命名或属于已合并的组织而拥有旧账户 URL,请改用 ALTER ACCOUNT ...DROP OLD ORGANIZATION URL。
DROP OLD ORGANIZATION URL发生以下任一情况后,系统会移除账户的原始 账户 URL:
账户已移至其他组织。
账户的组织已重命名。
账户是与另一个组织合并的组织的一部分。
如果一个账户因为重命名的是该账户(而不是组织)而拥有旧账户 URL,请改用 ALTER ACCOUNT ...DROP OLD URL 命令。
使用说明¶
账户参数只能在账户级别设置。
使用此命令设置的会话和对象参数只能用作默认值:
可以在个人用户级别上覆盖的用户参数。
可以在个人用户和会话级别上覆盖的会话参数。
可以在个人对象级别上覆盖的对象参数。
在账户级别设置资源监视器可以控制在账户中创建的所有虚拟仓库的 Credit 使用量,但不会影响 Snowflake 提供的任何仓库的 Credit 使用量。有关更多详细信息,请参阅 使用资源监视器。
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
示例¶
将名为 mypolicy 的网络策略与您的账户关联:
ALTER ACCOUNT SET NETWORK_POLICY = mypolicy;
禁用用户权限授予:
ALTER ACCOUNT SET DISABLE_USER_PRIVILEGE_GRANTS = TRUE;
将网络策略关联从您的账户中移除:
ALTER ACCOUNT UNSET NETWORK_POLICY;
在账户级别设置包策略。
ALTER ACCOUNT SET PACKAGES POLICY packages_policy_prod_1 FORCE;备注
如果已经在当前账户上设置了包策略,则可以使用 FORCE 来设置包策略,而不必先取消包政策。
取消设置包策略。
ALTER ACCOUNT UNSET PACKAGES POLICY;
