Collaboration Data Clean Room 故障排除

当您在使用 Collaboration Data Clean Room 时遇到错误时,请参阅以下故障排除提示。

协作

错误:

Pending invitation for collaboration: <collaboration name> not found although GET_STATUS 显示账户为 INVITED

原因:

如果初始联接尝试由于某种原因失败,则后续联接尝试可能会因此失败。

解决方案:

删除并重新创建协作。


 

错误:

您创建的协作在协作者的账户中不可见。

原因:

可能有以下几种原因:

  • 协作是在不同的云托管区域创建的,并且您尚未启用 Cross-Cloud Auto-Fulfillment

  • 您没有共享协作,使用错误账户共享协作,或者您在 Snowsight/SDCR UI/CLI 中打开了错误的协作者账户。确认您希望看到协作的账户是您共享协作的账户,并且您已登录该共享账户。

  • 从发布协作到协作者可以看到它之间会有很小的延迟。

解决方案:

确认协作者的账户与您协作规范中的账户一致,并在必要时启用 Cross-Cloud Auto-Fulfillment。稍等片刻,等待协作传播完成。


 

错误:

:code:`ReferenceUsageGrantMissingException: Reference usage grants are required for the following databases in your account ...`(当数据提供商尝试加入协作时)。数据提供商在尝试加入协作时会看到此消息,并且他们共享了自己没有 REFERENCE_USAGE 的数据。这是符合预期的行为。

解决方案:

错误消息包括数据库名称和共享名称。必须由对数据具有 REFERENCE_USAGE 权限或具有 ACCOUNTADMIN 权限的人运行以下 SQL 命令,并提供错误消息中给出的数据库和共享名称

GRANT REFERENCE_USAGE ON DATABASE <database_name> TO SHARE <share_name>;

成功授予 REFERENCE_USAGE 后,数据提供商可以加入协作。

API 和权限

错误:

Unknown user-defined function <function name>

原因:

如果这是为 DCR 协作 API 记录的过程,您可能拼错了过程名称。

如果过程名称没有拼写错误,或者过程是系统过程(即,名称带 $),您可能使用的是旧版 API,需要升级您的 Clean Room API 版本。

解决方案:
  • 确认过程名称拼写正确,如果不正确,请再次尝试拼写正确。

  • 要更新安装,请运行以下 SQL 代码:

USE ROLE ACCOUNTADMIN;
CALL SAMOOHA_BY_SNOWFLAKE.APP_SCHEMA.PREPARE_MOUNT_SCRIPT();
EXECUTE IMMEDIATE FROM @SAMOOHA_BY_SNOWFLAKE.APP_SCHEMA.MOUNT_CODE_STAGE/dcr_loader.sql;

 

错误:

创建新的 Clean Room 或运行协作存储过程时出现的问题。

原因:

如果 Snowflake Data Clean Room 安装版本为 12.3 或更早版本,则相对于原生应用程序,API 环境可能已过时,并且自动更新可能已停止工作。

解决方案:

ACCOUNTADMIN 身份再次运行挂载程序,验证挂载,并可选择重新开启自动升级。

USE ROLE ACCOUNTADMIN;

-- Prepare the mount script
CALL SAMOOHA_BY_SNOWFLAKE.APP_SCHEMA.PREPARE_MOUNT_SCRIPT();

-- Execute the mount for Snowflake Data Clean Rooms
EXECUTE IMMEDIATE FROM @SAMOOHA_BY_SNOWFLAKE.APP_SCHEMA.MOUNT_CODE_STAGE/dcr_loader.sql;

USE ROLE SAMOOHA_APP_ROLE;
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.LIBRARY.CHECK_MOUNT_STATUS();

-- Optional: prefer automatic upgrades in the future
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.LIBRARY.ENABLE_LOCAL_DB_AUTO_UPGRADES();

 

错误:

Listing 'listing name' is not fulfilled to your current region. Please request the listing, or if already requested, retry after some time

原因:

您使用的是旧版 Clean Room API。此问题已在更新的版本中修复。

解决方案:

更新 Clean Room 安装。


 

错误:

SQL compilation error: Unknown user-defined function SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.COLLABORATION.RUN

原因:

您可能拼错了完全限定程序名称的某些部分,或者您没有运行该程序的权限。

解决方案:

确认您使用了正确的程序名称。如果您当前未使用 SAMOOHA_APP_ROLE,请尝试切换到该角色,看是否还会出现同样的错误。如果不再出现,则属于权限错误。


 

错误:

Unknown user-defined function SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.<namespace>.<procedure name>

原因:

以下其中一项:

  • 您使用了错误的命名空间。请确保调用正确的 COLLABORATIONREGISTRY 命名空间。

  • 您输入了错误的函数名称。查看参考指南以获取正确的命名。

  • 您使用的 RBAC 角色没有调用该过程的权限。

  • 您没有 SAMOOHA_APP_ROLE。

解决方案:
  • 确认您正确拼写了过程名称并使用了正确的命名空间。

  • 尝试切换到 SAMOOHA_APP_ROLE,看看是否能够运行该过程。如果可以,则说明问题在于您当前角色的权限不足。请向拥有 SAMOOHA_APP_ROLE 的用户请求 授予您相应的权限

  • 要检查您是否拥有 SAMOOHA_APP_ROLE,请运行以下命令:

SELECT CURRENT_USER();
SHOW GRANTS TO USER <current_user_name> ->> SELECT * FROM $1 WHERE "role" = 'SAMOOHA_APP_ROLE';

如果您未得到任何结果,请管理员授予您对协作的 API 访问权限。

代码捆绑包

错误:

CodeSpecAlreadyExistsException

原因:

已注册具有相同名称和版本的代码包规范。

解决方案:

使用其他版本或更新现有版本。


 

错误:

SpecValidationError

原因:

YAML 不符合架构。

解决方案:

检查必填字段和格式。


 

错误:

CodeSpecStageNotAccessibleError

原因:

工件中引用的暂存区不可访问。

解决方案:

授予对暂存区的访问权限或验证暂存区是否存在。


 

错误:

CodeSpecArtifactNotFoundAtStageError

原因:

在指定的暂存区路径中找不到文件。

解决方案:

注册前将文件上传到暂存区。


 

错误:

StageDirectoryNotEnabledError

原因:

暂存区没有启用 DIRECTORY。

解决方案:

在暂存区上启用目录:ALTER STAGE ... SET DIRECTORY = (ENABLE = TRUE)


 

错误:

CodeSpecNotFoundForOwnerException

原因:

模板引用了未注册的代码包规范。

解决方案:

在注册模板之前注册代码包规范。