MSSQL
功能
| 功能 | 支持?(是/否) | 备注 |
|---|---|---|
| 完全刷新同步 | 是 | |
| 增量 - 追加同步 | 是 | |
| 增量 - 追加 + 去重 | 是 | |
| 命名空间 | 是 |
输出模式
每个流都会输出到 SQL Server 中的自己的表中。每个表将包含以下元数据列
_airbyte_raw_id:分配给每个传入记录的随机 UUID。SQL Server 中的列类型为VARCHAR(MAX)。_airbyte_extracted_at:从数据源提取事件的时间戳。SQL Server 中的列类型为BIGINT。_airbyte_meta:有关记录的附加信息。SQL Server 中的列类型为TEXT。_airbyte_generation_id:每次执行刷新时递增。SQL Server 中的列类型为TEXT。
有关这些字段的更多信息,请参阅此处。
入门
设置指南
- MS SQL Server:
Azure SQL Database、SQL Server 2016或更高版本
网络访问
确保您的 SQL Server 数据库可以被 Airbyte 访问。如果您的数据库位于 VPC 内,您可能需要允许来自您用于暴露 Airbyte 的 IP 的访问权限。
权限
您需要在 SQL Server 中配置一个用户,该用户可以创建表并写入行。我们强烈建议为此目的创建一个 Airbyte 专用用户。为了允许规范化,请为配置的用户授予 ALTER 权限。
目标数据库
您需要选择一个现有的数据库或创建一个将用于存储 Airbyte 同步数据的新数据库。
配置
您需要以下信息来配置 MSSQL 目标
- 主机
- MSSQL 数据库的主机名。
- 端口
- MSSQL 数据库的端口。
- 数据库名称
- MSSQL 数据库的名称。
- 默认模式
- 默认模式是写入表的模式,如果源未指定命名空间。此字段的常用值为“public”。
- 用户名
- 用于访问数据库的用户名。
- 密码
- 与此用户名关联的密码。
- JDBC URL 参数
- 附加属性,以“key=value”对的形式传递给 JDBC URL 字符串,并用符号“&”分隔。(例如:key1=value1&key2=value2&key3=value3)。
- SSL 方法
- SSL 配置支持三种模式:未加密、加密(信任服务器证书)和加密(验证证书)。
- 未加密:不在数据库连接上使用 SSL 加密
- 加密(信任服务器证书):使用 SSL 加密,但不验证服务器的证书。这在测试场景中对自签名证书很有用,但不应在生产环境中使用。
- 加密(验证证书):使用服务器的 SSL 证书,经过标准的证书验证后。
- 证书中的主机名(可选):在使用证书验证时,可以将此属性设置为指定预期的名称以增加安全性。如果存在此值,并且服务器证书的主机名与它不匹配,则证书验证将失败。
- SSL 配置支持三种模式:未加密、加密(信任服务器证书)和加密(验证证书)。
- 加载类型
- 数据加载类型支持两种模式:插入或批量
- 插入:使用 SQL
INSERT语句将数据加载到目标表。 - 批量:使用 Azure Blob Storage 和
BULK INSERT命令将数据加载到目标表。如果选择,则需要额外的配置- Azure Blob Storage 帐户名称 - Azure Blob Storage 帐户的名称。
- Azure Blob Storage 容器名称 - Azure Blob Storage 容器的名称。
- 共享访问签名 - 共享访问签名 (SAS)提供对资源的安全的委托访问权限。
- 批量加载数据源 - 指定在 MSSQL 中配置的外部数据源,该外部数据源引用 Azure Blob 容器。
- 预加载值验证 - 启用后,Airbyte 会在将值加载到目标表之前验证所有值。这提供了更强的数据完整性保证,但可能会显著影响性能。
- 插入:使用 SQL
- 数据加载类型支持两种模式:插入或批量
使用 Azure Blob Storage 批量上传的 MSSQL 设置指南
本节介绍如何设置和使用带有Azure Blob Storage 批量上传功能的Microsoft SQL Server (MSSQL) 连接器。通过首先将数据暂存到 Azure Blob Storage 容器中并使用 BULK INSERT,您可以显著提高摄取速度并减少大型或频繁数据加载的网络开销。
为什么使用 Azure Blob Storage 批量上传?
在处理高数据量或频繁同步时,逐行插入到 MSSQL 会变得缓慢且资源密集。通过首先将文件暂存到 Blob Storage 中,您可以
- 将数据聚合到批量文件:数据以批次写入 Blob Storage,从而减少开销。
- 执行批量摄取:MSSQL 使用
BULK INSERT直接加载这些文件,通常与传统的逐行插入相比,性能更快。
先决条件
- Microsoft SQL Server 实例
- 与本地 SQL Server 或 Azure SQL Database 兼容。
- Azure Blob Storage 帐户
- 一个存储帐户和一个容器(例如,
bulk-staging),数据文件将被放置在其中。
- 一个存储帐户和一个容器(例如,
- 权限
- Blob Storage:能够创建、读取和删除指定容器中的对象。
- MSSQL:能够创建或修改表,以及执行
BULK INSERT的权限。
设置指南
按照以下步骤配置带有 Azure Blob Storage 的 MSSQL 以进行批量上传。
1. 设置 Azure Blob Storage
- 创建存储帐户和容器
- 在 Azure 门户中,创建(或重用)一个存储帐户。
- 在该帐户中,创建一个容器(例如,
bulk-staging)来暂存您的数据文件。
- 建立访问凭据
- 使用限定到您的容器的共享访问签名 (SAS)。
- 确保 SAS 令牌或角色分配包括诸如读取、写入、删除和列出之类的权限。
2. 配置 MSSQL
有关更多详细信息,请参阅官方Microsoft 文档。以下是一个简化的概述
-
(可选)创建主加密密钥 如果您的环境需要主密钥来安全地存储凭据,请创建一个
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<your_password>'; -
创建数据库范围的凭据 使用 SAS 令牌配置一个凭据,授予 MSSQL 访问您的 Blob Storage 的权限
CREATE DATABASE SCOPED CREDENTIAL <credential_name>
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<your_sas_token>'; -
创建外部数据源 使用凭据将 MSSQL 指向您的 Blob 容器
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://<storage_account>.blob.core.windows.net/<container_name>',
CREDENTIAL = <credential_name>
);您将在配置连接器时引用
<data_source_name>。
3. 连接器配置
您需要提供
- MSSQL 连接详情
- 服务器主机名/IP、端口、数据库名称和身份验证(用户名/密码)。
- 批量加载数据源
- 您创建的外部数据源的名称(例如,
<data_source_name>)。
- 您创建的外部数据源的名称(例如,
- Azure 存储帐户 & 容器
- 存储帐户和容器的名称。
- SAS 令牌
- 授予 Blob 存储访问权限的令牌。
有关 BULK INSERT 连接器配置的更多详细信息,请参阅本指南的 入门:配置部分。
参考
配置字段参考
变更日志
展开以查看
| 版本 | 日期 | 拉取请求 | 主题 |
|---|---|---|---|
| 2.2.14 | 2025-11-05 | 69130 | 升级到 Bulk CDK 0.1.61。 |
| 2.2.13 | 2025-09-24 | 66684 | 固定到 CDK artifact |
| 2.2.12 | 2025-06-26 | 62078 | 添加 SSH 隧道支持 |
| 2.2.11 | 2025-05-30 | 61017 | 集成测试修复 |
| 2.2.10 | 2025-05-29 | 60897 | 内部修复 |
| 2.2.9 | 2025-05-19 | 60791 | 修复在流没有列时检测模式更改的错误 |
| 2.2.8 | 2025-05-08 | 59735 | 清理:删除未使用的代码 |
| 2.2.7 | 2025-05-07 | 56444 | CDK:内部重构;性能改进 |
| 2.2.6 | 2025-04-21 | 58146 | 修复数值边界处理 |
| 2.2.5 | 2025-04-18 | 58140 | 升级到最新 CDK |
| 2.2.4 | 2025-04-11 | 57563 | 改进 BULK INSERT 文档。 |
| 2.2.3 | 2025-04-16 | 58085 | 内部重构 |
| 2.2.2 | 2025-04-07 | 56391 | 添加对通过存储帐户密钥进行 Azure blob 存储身份验证的支持。 |
| 2.2.1 | 2025-03-27 | 56402 | 改进 Azure blob 存储加载逻辑。 |
| 2.2.0 | 2025-03-23 | 56353 | 批量加载性能改进 |
| 2.1.2 | 2025-03-25 | 56346 | 内部重构 |
| 2.1.1 | 2025-03-24 | 56355 | 升级到 airbyte/java-connector-base:2.0.1 以兼容 M4。 |
| 2.1.0 | 2025-03-24 | 55849 | 类型处理中的各种错误修复(尤其是在复杂类型中) |
| 2.0.5 | 2025-03-24 | 55904 | 修复无效模式的处理(正确地 JSON 序列化值) |
| 2.0.4 | 2025-03-20 | 55886 | 内部重构 |
| 2.0.3 | 2025-03-18 | 55811 | CDK:传递 DestinationStream 而不是 Descriptor |
| 2.0.2 | 2025-03-12 | 55720 | 恢复定义 ID |
| 2.0.1 | 2025-03-12 | 55718 | 修复 metadata.yaml 中的破坏性变更信息 |
| 2.0.0 | 2025-03-11 | 55684 | 发布 2.0.0 |
| 2.0.0.rc13 | 2025-03-07 | 55252 | RC13:批量加载的 OOM 错误修复 |
| 2.0.0.rc12 | 2025-03-05 | 54159 | RC12:支持使用 Azure Blob 存储进行批量插入 |
| 2.0.0.rc11 | 2025-03-04 | 55193 | RC11:提高十进制精度 |
| 2.0.0.rc10 | 2025-02-24 | 54648 | RC10:修复带有连字符的索引列名 |
| 2.0.0.rc9 | 2025-02-21 | 54197 | RC9:修复带有无效字符的索引列名 |
| 2.0.0.rc8 | 2025-02-20 | 54186 | RC8:修复 String 支持 |
| 2.0.0.rc7 | 2025-02-11 | 53364 | RC7:撤销删除变更 |
| 2.0.0.rc6 | 2025-02-11 | 53364 | RC6:将删除操作分解为循环以减少锁定 |
| 2.0.0.rc5 | 2025-02-07 | 53236 | RC5:使用 rowlock 提示 |
| 2.0.0.rc4 | 2025-02-06 | 53192 | RC4:修复配置、时间处理、性能调整 |
| 2.0.0.rc3 | 2025-02-04 | 53174 | RC3:修复 metadata.yaml 以供发布 |
| 2.0.0.rc2 | 2025-02-04 | 52704 | RC2:性能改进 |
| 2.0.0.rc1 | 2025-01-24 | 52096 | 发布候选版本 |
| 1.0.3 | 2025-01-10 | 51497 | 使用非 root 基础镜像 |
| 1.0.2 | 2024-12-18 | 49891 | 使用基础镜像:airbyte/java-connector-base:1.0.0 |
| 1.0.1 | 2024-11-04 | #48134 | 修复支持的同步模式(destination-mssql 1.x.y 不支持 dedup) |
| 1.0.0 | 2024-04-11 | #36050 | 升级到 Dv2 表格式并删除归一化 |
| 0.2.0 | 2023-06-27 | #27781 | 许可证更新:Elv2 |
| 0.1.25 | 2023-06-21 | #27555 | 减小镜像大小 |
| 0.1.24 | 2023-06-05 | #27034 | 内部代码更改,用于未来的开发(在连接器内部安装规范化包) |
| 0.1.23 | 2023-04-04 | #24604 | 支持目标检查点 |
| 0.1.22 | 2022-10-21 | #18275 | 升级 commons-text 以修复 CVE 2022-42889 |
| 0.1.20 | 2022-07-14 | #14618 | 从 JDBC 目标连接器中删除了 additionalProperties: false |
| 0.1.19 | 2022-05-25 | #13054 | 目标 MSSQL:添加了自定义 JDBC 参数支持。 |
| 0.1.18 | 2022-05-17 | #12820 | 改进了“检查”操作的性能 |
| 0.1.17 | 2022-04-05 | #11729 | 将 mina-sshd 从 2.7.0 升级到 2.8.0 |
| 0.1.15 | 2022-02-25 | #10421 | 重构 JDBC 参数处理 |
| 0.1.14 | 2022-02-14 | #10256 | 添加 -XX:+ExitOnOutOfMemoryError JVM 选项 |
| 0.1.13 | 2021-12-28 | #9158 | 更新连接器字段标题/描述 |
| 0.1.12 | 2021-12-01 | #8371 | 修复 ssh 密钥中的不正确的处理 "\n" |
| 0.1.11 | 2021-11-08 | #7719 | 通过基于其字节大小而不是其计数来缓冲记录来改进对宽行的处理 |
| 0.1.10 | 2021-10-11 | #6877 | 添加 normalization 功能,添加 append+deduplication 同步模式 |
| 0.1.9 | 2021-09-29 | #5970 | 添加对通过 SSH 隧道进行 MSSQL 目标的支持和测试用例 |
| 0.1.8 | 2021-08-07 | #5272 | 添加批量方法以插入记录 |
| 0.1.7 | 2021-07-30 | #5125 | 启用 spec.json 中的 additionalPropertities |
| 0.1.6 | 2021-06-21 | #3555 | BufferedStreamConsumer 中的部分成功 |
| 0.1.5 | 2021-07-20 | #4874 | 在 spec 中正确声明对象类型 |
| 0.1.4 | 2021-06-17 | #3744 | 修复规范文件中的文档/参数 |
| 0.1.3 | 2021-05-28 | #3728 | 更改 dockerfile 入口点 |
| 0.1.2 | 2021-05-13 | #3367 | 修复处理 Unicode 符号 |
| 0.1.1 | 2021-05-11 | #3566 | MS SQL Server 目标发布! |