将 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 前提条件
- 确认您已完成 启用 BigQuery Data Transfer Service所需的所有操作。
- 创建 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 数据传输
从下列选项中选择一项:
控制台
进入数据传输页面。
点击 创建转移作业。
在来源类型 部分的来源 中,选择 Microsoft SQL Server 。
在数据源详细信息 部分,执行以下操作:
- 对于网络连接 ,选择现有网络连接 或点击创建网络连接 。
- 对于主机,输入 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 表,或手动输入转移所需的表的名称。
在目标设置 部分,对于数据集 ,选择您创建用来存储数据的 数据集,或点击创建新数据集 ,然后创建一个数据集用作目标数据集。
在转移作业配置名称 部分的显示名称 中, 输入转移作业的名称。转移作业名称可以是任何易于识别该转移作业的值,以便您以后在需要修改时找到转移作业。
在时间表选项部分,执行以下操作:
- 选择重复频率。如果您选择小时、天(默认)、周或月选项,还必须指定频率。您还可以选择自定义选项来创建更具体的重复频率。如果您选择按需选项,则只有当您手动触发转移作业时,此数据转移作业才会运行。
- 如果适用,请选择立即开始 或从设置的时间开始 选项,并提供开始日期和运行时间。
可选:在通知选项 部分,执行以下操作:
可选:在高级选项 部分,为此转移作业选择加密类型。您可以选择 Google 拥有的 Cloud Key Management Service 密钥 Google-owned and Google-managed encryption key ,也可以选择客户拥有的 Cloud Key Management Service 密钥。如需详细了解加密 密钥,请参阅客户管理的加密密钥 (CMEK)。
点击保存 。
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用于加密数据并仅验证 CAENCRYPT_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 连接器将元数据转移到 Knowledge Catalog。如需了解更多 信息,请参阅将 Microsoft SQL Server 元数据加载到 Knowledge Catalog。后续步骤
- 大致了解 BigQuery Data Transfer Service。
- 了解如何管理转移作业,包括获取有关 转移作业配置的信息、列出转移作业配置以及查看 转移作业的运行历史记录。
- 了解如何使用 BigQuery Omni 操作加载数据。