

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 排查 Snowflake 问题
<a name="troubleshooting-snowflake"></a>

本节介绍了使用 Snowflake 作为目的地时常见的问题排查步骤

## Firehose 流创建失败
<a name="stream-creation-fails"></a>

如果将数据传送到 PrivateLink-enabled Snowflake 集群的流创建 Firehose 直播失败，则表示 Fireh VPCE-ID ose 无法访问。这可能是由以下原因之一导致的：
+ 不正确 VPCE-ID。确认没有印刷错误。
+ Firehose 在预览版中不支持无区域的 Snowflake URL。使用 Snowflake 账户定位器提供 URL。请参阅 [Snowflake 文档](https://docs.snowflake.com/en/user-guide/admin-account-identifier#format-2-legacy-account-locator-in-a-region)了解更多详细信息。
+ 确认 Firehose 直播是在与 Snowflake Amazon 区域相同的区域中创建的。
+ 如果问题仍然存在，请联系 Amazon 支持人员。

### 传输失败
<a name="delivery-failures"></a>

如果数据未传输到您的 Snowflake 表，请检查以下各项。Snowflake 传输失败的数据将连同与有效载荷对应的错误代码和错误消息一起传输到 S3 错误存储桶。以下是一些常见的错误场景。有关错误代码的完整列表，请参阅 [Snowflake 数据传输错误](monitoring-with-cloudwatch-logs.md#monitoring-snowflake-errors)。
+ **错误代码： Snowflake.DefaultRoleMissing**：表示在创建 Firehose 直播时未配置雪花角色。如果未配置 Snowflake 角色，则请确保将默认角色设置为指定的 Snowflake 用户。
+ **错误代码： Snowflake.ExtraColumns**：表示由于输入负载中有额外的列而拒绝了向 Snowflake 的插入。不应指定表中不存在的列。请注意，Snowflake 列名称是区分大小写的。如果尽管表中存在列，但传输仍因此错误而失败，则请确保输入有效载荷中列名的大小写与表定义中声明的列名相匹配。
+ **错误代码： Snowflake.MissingColumns**：表示由于输入负载中缺少列，向 Snowflake 插入操作被拒绝。确保为所有非空列指定值。
+ **错误代码: Snowflake.InvalidInput**: 当 Firehose 无法将提供的输入负载解析为有效的 JSON 格式时，可能会发生这种情况。请确保 json 有效载荷格式正确，没有多余的双引号、引号、转义字符等。Firehose 目前仅支持将单个 JSON 项目作为记录有效载荷，并且不支持 JSON 数组。
+ **错误代码： Snowflake.InvalidValue**：表示由于输入负载中的数据类型不正确，传送失败。确保输入有效载荷中指定的 JSON 值符合 Snowflake 表定义中声明的数据类型。
+ **错误代码： Snowflake.InvalidTableType**：表示不支持 Firehose 直播中配置的表格类型。有关支持的表、列和数据类型，请参阅 snowpipe 流的[限制](https://docs.snowflake.com/en/user-guide/data-load-snowpipe-streaming-overview#limitations)中提供的限制。

**注意**  
 无论出于何种原因，如果在创建 Firehose 流后更改了 Snowflake 目的地上的表定义或角色权限，则 Firehose 可能需要几分钟才能检测到这些更改。如果您因此而看到传输错误，则请尝试删除并重新创建 Firehose 流。