将 Microsoft SQL Server 数据加载到 BigQuery 中

注意:如需获得有关此功能的支持或提供相关反馈,请联系 dts-preview-support@google.com

您可以使用适用于 Microsoft SQL Server 的 BigQuery Data Transfer Service 连接器将数据从 Microsoft SQL Server 加载到 BigQuery。Microsoft SQL Server 连接器支持从托管在本地环境和其他云提供商(例如 Cloud SQL、Amazon Web Services [AWS] 或 Microsoft Azure)中的 Microsoft SQL Server 实例加载数据。借助 BigQuery Data Transfer Service,您可以创建按需数据转移作业和周期性数据转移作业,以将数据从 Microsoft SQL Server 实例转移到 BigQuery。

限制

Microsoft SQL Server 数据转移作业受到以下限制:

  • 与 Microsoft SQL Server 数据库的并发连接数有限。因此,单个 Microsoft SQL Server 数据库的并发转移运行数也受此限制。确保并发转移作业的数量小于 Microsoft SQL Server 数据库支持的并发连接数上限。
  • 某些 Microsoft SQL Server 数据类型可能会映射到 BigQuery 中的 STRING 类型,以避免数据丢失。例如,Microsoft SQL Server 中未定义精度和标度的某些数值类型可能会映射到 BigQuery 中的 STRING。如需了解详情,请参阅数据类型映射

增量转移限制

增量 Microsoft SQL Server 转移作业受到以下限制:

  • 您只能选择 TIMESTAMP 列作为水位线列。
  • 仅当资产具有有效的水位线列时,才支持增量提取。
  • 水位线列中的值必须单调递增。
  • 增量转移无法同步源表中的删除操作。
  • 单个转移配置只能支持增量提取或完整提取。
  • 在首次增量提取运行后,您无法更新 asset 列表中的对象。
  • 在首次增量提取运行后,您无法更改转移配置中的写入模式。
  • 在首次增量提取运行后,您无法更改水位线列或主键。
  • 目标 BigQuery 表使用提供的主键进行聚簇,并受聚簇表限制约束。
  • 首次将现有转移配置更新为增量提取模式时,更新后的首次数据转移会转移数据源中的所有可用数据。任何后续增量数据转移作业都只会转移数据源中的新行和更新行。
  • 我们建议您在水印列上创建索引。此连接器在增量传输中使用水位列进行过滤,因此为这些列编制索引可以提高性能。
  • 进行增量转移时,您必须使用更新的数据类型映射。

数据注入选项

以下部分介绍了设置 Microsoft SQL Server 数据转移作业时可用的数据注入选项。

TLS 配置

Microsoft SQL Server 连接器支持配置传输层安全性 (TLS),以加密您向 BigQuery 传输的数据。Microsoft SQL Server 连接器支持以下 TLS 配置:

  • 加密数据,并验证 CA 和主机名模式。此模式使用基于 TCPS 协议的 TLS 对服务器执行完整验证。它会加密传输中的所有数据,并验证数据库服务器的证书是否由受信任的证书授权机构 (CA) 签名。此模式还会检查您要连接的主机名是否与服务器证书上的通用名称 (CN) 或正文备用名称 (SAN) 完全一致。此模式可防止攻击者使用其他网域的有效证书来冒充您的数据库服务器。

    如果主机名与证书 CN 或 SAN 不匹配,连接会失败。您必须配置与证书匹配的 DNS 解析,或使用其他安全模式。使用此模式可获得最安全的选项,以防止中间人 (PITM) 攻击。

  • 加密数据,仅验证 CA 模式。此模式使用基于 TCPS 协议的 TLS 加密所有数据,并验证服务器的证书是否由客户端信任的 CA 签名。不过,此模式不会验证服务器的主机名。只要证书有效且由可信的 CA 签发,此模式就能成功连接,无论证书中的主机名是否与您要连接的主机名匹配。

    如果您想确保自己连接到的服务器的证书是由可信的 CA 签名的,但主机名无法验证,或者您无法控制主机名配置,请使用此模式。

  • 仅加密模式。此模式会加密客户端与服务器之间传输的所有数据。它不会执行任何证书或主机名验证。

    此模式通过保护传输中的数据来提供一定程度的安全性,但可能会受到 PITM 攻击。

    如果您需要确保所有数据都经过加密,但无法或不想验证服务器的身份,请使用此模式。建议在处理专用 VPC 时使用此模式。

  • 不加密或不验证模式。此模式不会加密任何数据,也不会执行任何证书或主机名验证。所有数据都以纯文本形式发送。

    我们不建议在处理敏感数据的环境中使用此模式。我们建议仅在安全不是问题的隔离网络中将此模式用于测试目的。

可信服务器证书 (PEM)

如果您使用的是加密数据,并验证 CA 和主机名模式或加密数据,并验证 CA 模式,则还可以提供一个或多个 PEM 编码的证书。在某些情况下,BigQuery Data Transfer Service 需要在 TLS 连接期间验证数据库服务器的身份,此时需要这些证书:

  • 如果您使用的是由组织内的私有 CA 签名的证书或自签名证书,则必须提供完整的证书链或单个自签名证书。对于由托管云提供商服务的内部 CA(例如 Amazon Relational Database Service (RDS))颁发的证书,这是必需的。
  • 如果您的数据库服务器证书是由公共 CA(例如 Let's Encrypt、DigiCert 或 GlobalSign)签名的,则无需提供证书。这些公共 CA 的根证书已预安装并受到 BigQuery Data Transfer Service 的信任。

您可以在转移配置的 Trusted PEM Certificate(受信任的 PEM 证书)字段中指定 PEM 编码的证书,但需满足以下要求:

  • 证书必须是有效的 PEM 编码证书链。
  • 证书必须完全正确。证书链中缺少任何证书或内容不正确都会导致 TLS 连接失败。
  • 对于单个证书,您可以提供数据库服务器中的单个自签名证书。
  • 对于由私有 CA 颁发的完整证书链,您必须提供完整的信任链。这包括数据库服务器的证书以及任何中间 CA 证书和根 CA 证书。

完整转移或增量转移

设置 Microsoft SQL Server 转移作业时,您可以在转移作业配置中选择完整增量写入偏好设置,以指定数据加载到 BigQuery 的方式。预览版支持增量转移。

您可以配置完整数据转移,以便在每次数据转移时转移 Microsoft SQL Server 数据集中的所有数据。

或者,您也可以配置增量数据转移(预览版),以仅转移自上次数据转移以来更改的数据,而不是在每次数据转移时都加载整个数据集。如果您为数据转移选择增量,则必须指定附加upsert 写入模式,以定义在增量数据转移期间如何将数据写入 BigQuery。以下各部分介绍了可用的写入模式。

附加写入模式

附加写入模式只会向目标表中插入新行。此选项会严格附加转移的数据,而不检查是否存在现有记录,因此这种模式可能会导致目标表中的数据重复。

选择附加模式时,您必须选择水位线列。Microsoft SQL Server 连接器需要一个水位线列来跟踪源表中的更改。

对于 Microsoft SQL Server 转移,我们建议选择仅在创建记录时更新的列,且该列不会随后续更新而变化,例如 CREATED_AT 列。

Upsert 写入模式

upsert 写入模式会通过检查主键来更新目标表中的行或在其中插入新行。您可以指定主键,以便 Microsoft SQL Server 连接器确定需要进行哪些更改才能使目标表与源表保持同步。如果在数据转移期间,指定的主键存在于目标 BigQuery 表中,则 Microsoft SQL Server 连接器会使用源表中的新数据更新该行。如果在数据转移期间不存在主键,则 Microsoft SQL Server 连接器会插入新行。

选择 upsert 模式时,您必须选择水位线列和主键:

  • Microsoft SQL Server 连接器需要一个水位线列来跟踪源表中的更改。
    • 选择一个每次修改行时都会更新的水位线列。建议使用与 UPDATED_ATLAST_MODIFIED 列类似的列。
  • 主键可以是表中的一列或多列,Microsoft SQL Server 连接器需要使用这些列来确定是否需要插入或更新行。

    选择包含非 null 值且在表的所有行中都唯一的列。我们建议使用包含系统生成的标识符、唯一参考代码(例如自动递增的 ID)或不可变、基于时间的序列 ID 的列。

    为防止潜在的数据丢失或数据损坏,您选择的主键列必须具有唯一值。如果您对所选主键列的唯一性有疑问,建议您改用附加写入模式。

增量提取行为

当您更改数据源中的表架构时,这些表中的增量数据转移会以以下方式反映在 BigQuery 中:

数据源变更 增量提取行为
添加新列 系统会在目标 BigQuery 表中添加一个新列。 此列的所有先前记录都将具有 null 值。
删除列 已删除的列仍保留在目标 BigQuery 表中。向此已删除的列添加的新条目会填充 null 值。
更改列中的数据类型 该连接器仅支持 ALTER COLUMN DDL 语句支持的数据类型转换。 任何其他数据类型转换都会导致数据转移失败。

如果您遇到任何问题,建议您创建新的转移配置。

重命名列 原始列会按原样保留在目标 BigQuery 表中,同时系统会向目标表添加一个具有更新名称的新列。

准备工作

在安排 Microsoft SQL Server 数据转移作业之前,您必须满足以下前提条件。

Microsoft SQL Server 前提条件

您必须已在 Microsoft SQL Server 数据库中创建用户账号。如需了解详情,请参阅创建具有登录权限的用户

BigQuery 前提条件

所需的角色

如需获得创建 Microsoft SQL Server 数据转移所需的权限,请让您的管理员为您授予项目的 BigQuery Admin (roles/bigquery.admin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含创建 Microsoft SQL Server 数据转移所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

创建 Microsoft SQL Server 数据转移作业需要以下权限:

  • bigquery.transfers.update