自动履行设置问题排查
设置列表时,数据产品的潜在问题可能会阻止自动履行。
- 远程账户中已有同名 Direct Share
- 角色不具备与共享相关的权限
- 在为多个列表生成快照期间自动履行失败
- 数据库大于 10TB
- 数据产品包含引用数据库
- 数据产品包含不支持的对象
- 列表数据库是主数据库
- 列表数据库是辅助数据库
- 数据产品中的主数据库不支持自动履行。
- 该用户无法共享到其他区域的账户
远程账户中已有同名 Direct Share¶
- Error:
组织内的两个或多个提供商不能创建同名的 Direct Share。
- Cause:
Cross-Cloud Auto-Fulfillment 使用的安全共享区域中已存在同名的 Direct Share。如果组织中的另一个账户在使用 Cross-Cloud Auto-Fulfillment,并且具有同名 Direct Share 自动履行到该云区域,则可能会发生这种情况。云区域中的安全共享区在您组织中的所有提供商账户之间共享。
- Solution:
重命名 Direct Share,该共享包含将自动履行的列表所附加的共享。重命名 Direct Share 不会影响任何下游使用者。
角色不具备与共享相关的权限
- Error:
必须具备选定共享的 OWNERSHIP,才能启用自动履行。
- Cause:
只有 ACCOUNTADMIN 角色才能设置自动履行。未授予 ACCOUNTADMIN 角色时,并且未继承拥有附加到列表的共享的该角色时,可能会发生此错误。
- Solution:
将拥有共享的角色授予 ACCOUNTADMIN 角色。例如,运行以下命令:
在为多个列表生成快照期间自动履行失败
- Error:
自动履行多个列表时发生内部错误。
- Cause:
如果多个列表使用同一个数据库进行跨区域共享,并且其中一个列表包含或引用不受支持的对象类型,则可能会发生错误。这可能会影响使用该数据库的所有列表的自动履行过程。例如,假设提供商添加了一个要跨云或跨区域传输的新列表。新列表共享其他列表也使用的数据库中的对象。新列表包括一个使用 BUILD_SCOPED_FILE_URL 的 VIEW,该函数可调用 GET_STAGE_FILE 以从 S3 中的外部暂存区检索数据。由于外部暂存区不支持自动履行,并且该数据库中的对象作为一个组一起传输,因此其他列表会出现相同的错误。如果不采取任何措施,远程区域的现有使用者将无法获得更新,新客户也将无法获得数据产品。
网络问题、身份验证问题或某些操作(如复制)中不支持的对象类型等其他问题也可能出现类似的错误。
- Solution:
从最近添加或更新的列表开始,验证以下内容:
- Verify that the listings in the group of listings that have errors include only supported object types for cross-region auto-fulfillment,
- Verify that none of the objects make reference to unsupported object types. You might have to check multiple levels of dependencies to identify the root cause of the issue, for example, a view calling BUILD_SCOPED_FILE_URL which itself calls GET_STAGE_FILE to retrieve data from an external stage.
- 对需要不同对象类型的列表使用单独的数据库,以避免交叉影响。
- 移除或替换任何不支持的对象,以避免自动履行错误。
- 检查是否存在潜在的网络、身份验证或缺失 GRANTS 问题。
- Contact Snowflake Support if the issue persists or you need assistance.
数据库大于 10TB¶
- Error:
由于共享与大于 10TB 的数据库相关联,自动履行不可用。
由于数据产品与大于 10TB 的数据库相关联,自动履行不可用。
- Cause:
包含共享中对象的数据库大于数据库复制和自动履行的 10TB 限制。此限制旨在防止自动履行或复制导致意外的高昂费用,但可以更改。
- Solution:
Explore the cost ramifications for auto-fulfilling a database larger than 10TB to one or more regions. See Auto-fulfillment costs.
If you accept the potential added cost, you can contact Snowflake Support to have the limit adjusted for your entire account.
Note
If you configured object-level (SUB_DATABASE) auto-fulfillment, then the auto-fulfillment size safety check will only include shared dependencies and not the entire database.
数据产品包含引用数据库
- Error:
共享中的引用数据库不支持自动履行。
下面的共享对象引用不兼容。
共享数据库中的以下引用不兼容。
- Cause:
附加到列表的共享包含引用数据库,或者包含引用其他数据库的对象。自动履行不支持引用其他数据库中的对象。
- Solution:
您可以执行下列操作之一:
- 从共享中移除引用数据库,以及对引用数据库进行引用的对象。
- Use a different database that has all of the objects required for the share. You might need to recreate tables in the new database and view & function definitions updated.
- Use manual fulfillment instead. Only some listings can be manually fulfilled. See Manually replicate data to fulfill a listing request.
数据产品包含不支持的对象
- Error:
数据产品包含与跨区域共享不兼容的对象。更新数据产品,以与其他区域中的账户共享。
以下共享对象不兼容。
共享数据库中的以下对象不兼容。
- Cause:
包含共享的数据库中包含自动履行不支持的对象。由于整个数据库都会自动履行,因此即使共享不包含对象,您仍有可能遇到此问题。
对于应用程序包,如果应用程序或所引用数据库中包含的数据内容含有自动履行不支持的对象,则可能会遇到此问题。
- Solution:
Review the full list of supported objects for auto-fulfillment. See Objects supported for auto-fulfillment.
如果数据库包含不支持的对象,可以执行下列操作之一:
- 从待共享数据库或应用程序包中移除不支持的对象。
- 使用包含共享所需的全部对象,并且不包含不支持的对象的另一个数据库。
列表数据库是主数据库
- Error:
共享中的主数据库不支持自动履行。
数据产品中的主数据库不支持自动履行。
无法自动履行列表:不支持全局数据库,而列表数据库是全局数据库。
- Cause:
共享包含以前用于数据库复制的数据库中的对象。
- Solution:
您可以执行下列操作之一:
- Convert the secondary and primary databases to use replication groups and set up a manual replication group if desired. See Transitioning from database replication to group-based replication
- 使用包含共享所需的全部对象,并且以前未复制过的其他数据库。
列表数据库是辅助数据库
- Error:
共享中的辅助数据库不支持自动履行。您需要在可用区域中手动设置账户,将数据库复制到各账户,在各账户中创建安全共享,并将这些共享附加到此列表。
数据产品中的辅助数据库不支持自动履行。请选择其他数据产品。
- Cause:
包含共享的数据库是辅助数据库,辅助数据库为只读,无法复制或自动履行。
- Solution:
您可以执行下列操作之一:
- 从数据库为主数据库的账户创建列表。
- 停止手动将数据库复制到其他区域。
数据产品中的主数据库不支持自动履行。
- Error:
Cannot set replication schedule for listing <my_listing>: account not set up for auto-fulfillment.
- Cause:
Auto-fulfillment hasn’t been enabled for your account, or you’re using a trial account.
- Solution:
-
If you’re using a full (non-trial) account, you can enable auto-fulfillment on your account using the SYSTEM$ENABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT system function.
You must use the ORGADMIN role to call this system function. If you aren’t the organization administrator, contact your organization administrator to enable auto-fulfillment for your account.
For more information, see Enable auto-fulfillment for your account.
-
If you’re using a trial account, upgrade to a full account to enable auto-fulfillment.
-
该用户无法共享到其他区域的账户
- Error:
要共享到其他区域的账户,请联系您的组织管理员,将权限委派给此账户中的 ACCOUNTADMIN 角色。
- Cause:
您的角色不具备设置自动履行的权限。
- Solution:
Contact your organization administrator to Manage privileges for auto-fulfillment.