将 Microsoft SQL Server 数据加载到 BigQuery 中

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

如需安排从 Microsoft SQL Server 到 BigQuery 的周期性数据传输,您可以创建转移作业配置来指定要传输的数据对象以及安排数据传输的频率。设置转移作业配置后, BigQuery Data Transfer Service 会按照指定的时间表将最新数据转移到 BigQuery 表中。

如需了解 Microsoft SQL Server 转移的工作原理,请参阅 Microsoft SQL Server 数据转移简介。

限制

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 数据传输,您必须满足以下前提条件。

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
  • bigquery.datasets.get

您也可以使用自定义角色或其他预定义角色来获取这些权限。

网络配置

当公共 IP 地址不适用于 Microsoft SQL Server 数据库连接时,您必须设置特定的网络配置。如需了解详情,请参阅以下部分:

设置 Microsoft SQL Server 数据传输

从下列选项中选择一项:

控制台

  1. 进入数据传输页面。

    转到“数据传输”

  2. 点击 创建转移作业。

  3. 在来源类型 部分的来源 中,选择 Microsoft SQL Server 。

  4. 在数据源详细信息 部分,执行以下操作:

    • 对于网络连接 ,选择现有网络连接 或点击创建网络连接 。
    • 对于主机,输入 Microsoft SQL Server 数据库的主机名或 IP 地址。
    • 对于端口号,输入 Microsoft SQL Server 数据库的端口号。
    • 对于数据库名称,输入 Microsoft SQL Server 数据库的名称。
    • 对于用户名,输入启动 Microsoft SQL Server 数据库连接 的 Microsoft SQL Server 用户的用户名。
    • 对于密码,输入启动 Microsoft SQL Server 数据库连接的 Microsoft SQL Server 用户的密码。
    • 对于 TLS 模式,请从菜单中选择一个选项。如需详细了解 TLS 模式,请参阅 TLS 配置。
    • 对于可信 PEM 证书,请输入颁发数据库服务器 TLS 证书的证书授权机构 (CA) 的公共证书。如需了解详情,请参阅可信服务器证书 (PEM)。
    • 对于启用旧版映射,选择 true (默认)以使用旧版 数据类型映射。选择 false 以使用更新的数据类型映射。如果您要进行增量转移,则此值必须为 false 。如需详细了解数据类型 映射更新,请参阅 2027 年 3 月 16 日。 数据库服务器。
    • 对于注入类型,请选择完整或增量。
    • 对于 Microsoft SQL Server 要转移的对象 ,请浏览 Microsoft SQL Server 表,或手动输入转移所需的表的名称。
  5. 在目标设置 部分,对于数据集 ,选择您创建用来存储数据的 数据集,或点击创建新数据集 ,然后创建一个数据集用作目标数据集。

  6. 在转移作业配置名称 部分的显示名称 中, 输入转移作业的名称。转移作业名称可以是任何易于识别该转移作业的值,以便您以后在需要修改时找到转移作业。

  7. 在时间表选项部分,执行以下操作:

    • 选择重复频率。如果您选择小时、天(默认)、周或月选项,还必须指定频率。您还可以选择自定义选项来创建更具体的重复频率。如果您选择按需选项,则只有当您手动触发转移作业时,此数据转移作业才会运行。
    • 如果适用,请选择立即开始 或从设置的时间开始 选项,并提供开始日期和运行时间。
  8. 可选:在通知选项 部分,执行以下操作:

    • 如需启用邮件通知,请点击邮件通知切换开关,将其切换到开启位置。启用此选项后,转移作业管理员会在转移作业运行失败时收到邮件通知。
    • 如需为转移作业配置 Pub/Sub 运行通知,请点击 Pub/Sub 通知切换开关,将其切换到开启位置。您可以选择您的主题 名称,也可以点击创建主题来创建一个主题。
  9. 可选:在高级选项 部分,为此转移作业选择加密类型。您可以选择 Google 拥有的 Cloud Key Management Service 密钥 Google-owned and Google-managed encryption key ,也可以选择客户拥有的 Cloud Key Management Service 密钥。如需详细了解加密 密钥,请参阅客户管理的加密密钥 (CMEK)。

  10. 点击保存 。

bq

输入 bq mk 命令并提供转移作业创建标志 --transfer_config:

bq mk \
    --transfer_config \
    --project_id=PROJECT_ID \
    --data_source=DATA_SOURCE \
    --display_name=DISPLAY_NAME \
    --target_dataset=DATASET \
    --params='PARAMETERS'

替换以下内容:

  • PROJECT_ID(可选):您的 Google Cloud 项目 ID。 如果未提供 --project_id 标志来指定特定项目,则系统会使用默认项目。
  • DATA_SOURCE:数据源,即 sqlserver。
  • DISPLAY_NAME:数据转移作业配置的显示名称。转移作业名称可以是任何可让您在需要修改转移作业时识别该转移作业的名称。
  • DATASET:数据转移作业配置的目标数据集。
  • PARAMETERS:所创建转移作业配置的参数(采用 JSON 格式)。例如: --params='{"param":"param_value"}'。以下是 Microsoft SQL Server 转移的参数:

    • connector.networkAttachment (可选):要连接到 Microsoft SQL Server 数据库的网络连接的名称。
    • connector.database:Microsoft SQL Server 数据库的名称。
    • connector.endpoint.host:数据库的主机名或 IP 地址。
    • connector.endpoint.port:数据库的端口号。
    • connector.authentication.username:数据库用户的用户名。
    • connector.authentication.password:数据库用户的密码。
    • connector.legacyMapping:设置为 true(默认)以使用 旧版 数据类型映射。设置为 false 以使用更新的数据类型映射。如果您要进行增量转移,则此值必须为 false。如需详细了解数据类型 映射更新,请参阅 2027 年 3 月 16 日。
    • connector.tls.mode:指定要用于此转移作业的 TLS 配置:
      • ENCRYPT_VERIFY_CA_AND_HOST 用于加密数据并验证 CA 和主机名
      • ENCRYPT_VERIFY_CA 用于加密数据并仅验证 CA
      • ENCRYPT_VERIFY_NONE 仅用于数据加密
      • DISABLE 用于不加密或不验证
    • connector.tls.trustedServerCertificate:(可选)提供一个或多个 PEM 编码的证书。 仅当 connector.tls.mode 的值为 ENCRYPT_VERIFY_CA_AND_HOST 或 ENCRYPT_VERIFY_CA 时才需要。
    • ingestionType:指定 full 或 incremental。预览版支持增量 转移 。如需了解详情,请参阅完整转移或增量转移。
    • writeMode:指定 WRITE_MODE_APPEND 或 WRITE_MODE_UPSERT。
    • watermarkColumns:将表中的列指定为水位线列。 此字段是增量转移的必需字段。
    • primaryKeys:将表中的列指定为主键。 此字段是增量转移的必需字段。
    • assets:要从 Microsoft SQL Server 数据库转移的 Microsoft SQL Server 表的名称列表,作为转移的一部分。

例如,以下命令会创建一个名为 My Transfer 的 Microsoft SQL Server 转移作业:

bq mk \
    --transfer_config
    --target_dataset=mydataset
    --data_source=sqlserver
    --display_name='My Transfer'
    --params='{"assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"],
        "connector.authentication.username": "User1",
        "connector.authentication.password":"ABC12345",
        "connector.database":"DB1",
        "connector.endpoint.host":"192.168.0.1",
        "connector.endpoint.port":"1520",
        "connector.networkAttachment":"projects/dev-project1/regions/us-central1/networkattachments/na1",
        "ingestionType":"incremental",
        "writeMode":"WRITE_MODE_APPEND",
        "watermarkColumns":["createdAt","createdAt"],
        "primaryKeys":[['dep_id'], ['report_by','report_title']],
        "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST",
        "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'

在增量转移期间指定多个资产时,watermarkColumns 和 primaryKeys 字段的值对应于 assets 字段中值的位置。在以下示例中,dep_id 对应于表 DB1/DEPARTMENT,而 report_by 和 report_title 对应于表 DB1/EMPLOYEES。

      "primaryKeys":[['dep_id'], ['report_by','report_title']],
      "assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"],
  

保存转移作业配置后,Microsoft SQL Server 连接器会根据您的安排选项自动触发转移运行。在每次转移运行时,Microsoft SQL Server 连接器都会将 Microsoft SQL Server 中的所有可用数据转移到 BigQuery。

如需在常规安排之外手动运行数据传输,您可以启动 回填运行。

问题排查

如需排查数据转移的问题,请参阅 Microsoft SQL Server 转移问题。

转移元数据

您还可以使用 Microsoft SQL Server 连接器将元数据转移到 Knowledge Catalog。如需了解更多 信息,请参阅将 Microsoft SQL Server 元数据加载到 Knowledge Catalog。

后续步骤