跳至内容

如何解决在 Quick Sight 中使用自定义 SQL 数据来源时出现的 SQL 异常错误?

2 分钟阅读
0

我尝试在 Amazon Quick Sight 中使用自定义 SQL 数据来源,但我收到了错误消息“Your database generated a SQL exception”。

简短描述

当 Quick Sight 查询或刷新您的 SQL 数据来源时,您会收到以下错误消息:

“Your database generated a SQL exception.This can be caused by query timeouts, resource constraints, unexpected DDL alterations before or during a query, and other database errors.Check your database settings and your query, and try again."

由于以下原因,您可能会收到前面的错误消息:

  • 查询超时。
  • 您的数据来源的虚拟私有云 (VPC) 连接存在问题。
  • 您的 Quick Sight 账户没有访问数据的权限。
  • 您的 Quick Sight 服务角色没有访问 AWS 托管式密钥 Management Service (AWS KMS) 密钥的权限。
  • 您使用了不支持的数据类型或函数。

有关导致错误的原因的详细信息,请在错误消息下选择 Show Details(显示详细信息)。

如果您在刷新数据集时收到前面的错误消息,您可以在数据集的 Summary(摘要)下找到有关该错误的详细信息。选择 Status Import Failed(状态导入失败)以获取详细信息。

如果前面的错误消息显示在控制面板上,请导航到 Underlying analysis(基础分析),然后选择 Concerned visual(s)(相关视图)。记下位于分析左侧窗格中的数据集,然后查看数据集的 Summary(摘要)。

解决方法

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,确保您使用的是最新版本的 AWS CLI

查询超时

如果自定义 SQL 查询超时,请简化查询以优化运行时。有关其他查询超时解决方案,请参阅如何解决 Quick Sight 中的查询超时错误?

您的数据来源的 VPC 连接存在问题

您会收到以下错误消息之一:

"Communications link failure The last packet successfully received from the server was nnnn milliseconds ago.The last packet sent successfully to the server was nnnn milliseconds ago."

-或-

"Communications link failure The last packet sent successfully to the server was 0 milliseconds ago.The driver has not received any packets from the server."

如果您遇到数据来源的 VPC 连接问题,请检查 VPC 中与资源关联的网络安全组。有关详细信息,请参阅 Connecting to a VPC with Amazon Quick Sight(使用 Amazon Quick Sight 连接到 VPC)

您的 QuickSight 账户没有访问数据的权限

如果您在尝试访问 AWS 服务中的数据时遇到 SQL 异常错误,请检查您的 Quick Sight 安全和权限设置。

完成以下步骤:

  1. 打开 Quick Sight 控制台
  2. 选择 Manage Quick Sight(管理 Quick Sight)。
  3. 选择 Security & Permissions(安全性和权限)。
  4. 配置对您使用的支持数据来源的访问权限。

如果您使用 AWS Organizations,当未向您分配必要的服务控制策略 (SCP) 时,您会收到错误。请要求 Organizations 管理员在 SCP 设置中验证分配给您的权限。

如果您是 Organizations 管理员,请参阅更新服务控制策略 (SCP)

您的 Quick Sight 服务角色没有访问 AWS 托管式 KMS 密钥的权限

您会收到以下错误:

“If you are encrypting query results with KMS key, please ensure you are allowed to access your KMS key.”

要确认 Quick Sight 服务角色拥有正确的 AWS KMS 密钥权限,请完成以下步骤:

  1. 使用 AWS Identity and Access Management (IAM) 控制台查找 Quick Sight 服务角色 ARN。
  2. 使用 Amazon Simple Storage Service (Amazon S3) 控制台查找 AWS KMS 密钥 ARN。转到包含您的数据文件的存储桶。选择 Overview(概述)选项卡,然后找到 AWS KMS 密钥 ID。
  3. 运行 create-grant AWS CLI 命令,将 Quick Sight 服务角色 ARN 添加到 AWS KMS 密钥策略中:
    aws kms create-grant --key-id aws_kms_key_arn --grantee-principal quicksight_role_arn --operations Decrypt
    **注意:**请将 aws_kms_key_arn 替换为您的 AWS KMS 密钥的 ARN,将 quicksight_role_arn 替换为您的 Quick Sight 服务角色的 ARN。

您使用了不支持的数据类型或函数

如果您尝试导入不支持的数据类型或使用不支持的 SQL 函数,则会收到 SQL 异常错误。要解决此问题,请检查 SQL 数据来源以确定是否支持该数据类型或 SQL 函数。

要查看支持的内容,请查看以下资源:

相关信息

Quotas for direct SQL queries(直接 SQL 查询的配额)

如何创建从 Amazon Quick Sight 到私有子网中的 Amazon Redshift 集群或 Amazon RDS 数据库实例的私有连接?

Amazon Quick Sight 的操作、资源和条件键