适用于:Microsoft Fabric 中的✅ 仓库
本文介绍了从SQL Server迁移到数据仓库Microsoft Fabric Data Warehouse的方法。
小窍门
有关战略和规划的更多信息,请参见《迁徙规划:SQL Server到Fabric Data Warehouse》。
用Fabric 迁移助手 for Data Warehouse实现从SQL Server的自动迁移体验。 本文其余部分将介绍更多手动迁移步骤。
下表总结了数据模式(DDL)、数据库代码(DML)和数据的迁移方法。 每个选项将在本文后面详细说明。
| 选项 | 方法 | 它的作用是什么 | 技能或偏好 | Scenario |
|---|---|---|---|---|
| 1 | 数据工厂 | 架构转换 数据提取 数据引入 |
数据工厂流水线 | 简化的模式和数据迁移。 建议用于维度表。 |
| 2 | 带有分区的数据工厂 | 架构转换 数据提取 数据引入 |
数据工厂流水线 | 大型 事实表的并行迁移。 |
| 3 | 模式优先迁移 | 架构转换 | 数据工厂流水线 | 先迁移模式,然后分别提取和导入数据,以更好地控制吞吐量。 |
| 4 | SQL 迁移脚本 | 架构转换 数据提取 代码评估 |
T-SQL | 使用IDE和脚本来细致控制迁移任务。 |
| 5 | SQL 数据库项目 | 架构转换 代码评估 |
SQL 项目 | 使用数据库项目进行源代码控制、评估和部署。 |
| 6 | dbt | 架构转换 数据库代码转换 |
dbt | 通过更改适配器和目标配置,重用现有的DBT项目。 |
选择初始迁移的工作负载
当你决定从何处着手 SQL Server 到 Fabric Data Warehouse 的迁移项目时,请选择一个满足以下条件的工作负载领域:
- 通过快速提供新环境的好处,证明迁移到Fabric Data Warehouse的可行性。 从小而简单的开始,准备多次小迁徙。
- 给你的技术人员时间,让他们积累相关经验,熟悉他们用来迁移其他工作负载的流程和工具。
- 为后续迁移创建一个专门针对您的 SQL Server 环境、工具和进程的模板。
小窍门
创建需要迁移的对象清单,并从头到尾记录迁移过程,以便对其他数据库或工作负载重复。
初始迁移中的数据量应足够大以展示Fabric Data Warehouse的能力和优势,但又要足够小以快速展示价值。 典型的大小为 1-10 TB。
使用 Fabric Data Factory 迁移
Fabric Data Factory 提供一个低代码接口,可以转换表 DDL 并迁移从 SQL Server 的数据。
Fabric 数据工厂可以执行以下任务:
- 将模式(DDL)转换为Fabric Data Warehouse语法。
- 在Fabric Data Warehouse中创建模式对象。
- 将数据迁移到Fabric Data Warehouse。
选项 1. 使用Copy Assistant进行模式和数据迁移
该方法使用数据工厂复制助手连接到源SQL Server数据库,将表DDL转换为Fabric语法,并将数据复制到Fabric Data Warehouse。 你可以选择一个或多个源表。 生成的流水线使用ForEach活动并行复制所选表。
配置复制操作时:
- 使用SQL Server连接器作为源连接。
- 将并行副本限制在源数据库和网络能够承受的水平。
- 监控源CPU、I/O、事务日志使用情况以及提取过程中的生产工作负载延迟。
建议用途
使用Copy Assistant,做一个简单的界面,一次操作转换DDL并导入选定的表。 这种方法非常适合尺寸表和较小的工作负载。
对于大型表,使用分区来增加读写并行性。
选项 2. 带分区的数据迁移
对于每个大型事实表,请使用复制活动并配置源分区。 在有物理分区时使用,或通过指定合适的数字或日期列及其最小和最大值来配置动态范围分区。
使用分区时:
- 选择一个使各行均匀分布的分区列。
- 避免创建超过SQL Server能处理且不影响生产工作负载的并发源查询。
- 用代表性工作负载测试分区范围和并行复制设置。
- 在监控源和目的地的同时,逐步增加并行性。
建议用途
当并行提取能提升吞吐量时,使用数据工厂分区处理大型事实表。 根据你的源数据库资源和网络容量,来调整批处理数量和分区范围。
选项 3. 架构优先迁移
对于较大的数据库,应将模式迁移与数据迁移分开:
- 在 Fabric Data Warehouse 中转换并创建表架构。
- 将源数据提取到 Azure Data Lake Storage (ADLS) Gen2。
- 使用数据工厂或COPY INTO命令将分阶段的数据导入Fabric Data Warehouse。
将这些阶段分开,可以让你独立调节萃取和摄入。
使用 Data Factory 进行模式迁移
你可以用Fabric流水线将表模式从SQL Server迁移到Fabric Data Warehouse而不复制行。
配置流水线参数
创建一个 SchemaName 参数来指定要迁移哪些模式。 默认使用, dbo 或输入逗号分隔列表,如 'dbo','sales'。
配置查找活动
创建一个查找活动,并将其连接到源 SQL Server 数据库。 在 “设置” 选项卡中:
- 将“数据存储类型”设置为“外部”。
- 选择源 SQL Server 连接。
- 将 使用查询 设置为 查询。
- 添加一个动态查询,返回源模式和表名。
请使用以下表达式来创建查询:
@concat('
SELECT s.name AS SchemaName,
t.name AS TableName
FROM sys.tables AS t
INNER JOIN sys.schemas AS s
ON t.type = ''U''
AND s.schema_id = t.schema_id
AND s.name in (',coalesce(pipeline().parameters.SchemaName, 'dbo'),')
')
配置 ForEach 活动
在 ForEach 活动的设置选项卡中:
- 禁用 顺序 ,以便让迭代能够并发运行。
- 将 批处理计数 设置为源数据库能够维持的值。 先用保守值来测试。
- 将项目设置为
@activity('Get List of Source Objects').output.value。
配置复制活动
在ForEach活动中,添加一个复制活动。 在“源”选项卡中:
- 将“数据存储类型”设置为“外部”。
- 选择源 SQL Server 连接。
- 将 使用查询 设置为 查询。
- 将Query设置为
@concat('SELECT TOP 0 * FROM ',item().SchemaName,'.',item().TableName),以便仅迁移表元数据。
在“目标”选项卡中:
- 将“数据存储类型”设置为“工作区”。
- 将 Workspace 数据存储类型设置为 Data Warehouse,然后选择目标仓库。
- 将目标模式
@item().SchemaName设置为 。 - 将目标表
@item().TableName设置为 。
运行流水线后,确认Fabric Data Warehouse包含每个选定表和预期的模式。
使用 SQL 脚本进行迁移
当你想对模式转换、数据提取和代码评估进行细致控制时,可以使用T-SQL和PowerShell迁移脚本。
迁移脚本可以:
- 将模式(DDL)转换为Fabric Data Warehouse语法。
- 在Fabric Data Warehouse中创建模式对象。
- 从SQL Server提取数据到ADLS Gen2。
- 在存储过程、函数和视图中标记不支持的 T-SQL 语法。
Microsoft Fabric CAT 团队在 fabric-migration 仓库中提供迁移代码示例。
建议用途
当你熟悉T-SQL,偏好集成开发环境,并且需要控制各个迁移任务时,使用脚本。 使用 COPY INTO 或 Data Factory 将提取的数据引入 Fabric Data Warehouse。
使用 SQL 数据库项目进行迁移
Fabric Data Warehouse 已在 Visual Studio Code 的 SQL 数据库项目扩展中获得支持。
SQL 数据库项目提供源代码控制、数据库测试、模式验证和部署功能。 它可以:
- 将模式(DDL)转换为Fabric Data Warehouse语法。
- 在Fabric Data Warehouse中创建模式对象。
- 评估存储过程、函数和视图中未被支持的T-SQL语法。
对于数据迁移,可以使用 Data Factory 直接从 SQL Server 复制数据,或者先将数据提取到 ADLS Gen2,再使用 COPY INTO 或 Data Factory 将其引入。
关于如何使用带有迁移脚本的SQL数据库项目,请参见 fabric-migration仓库。
更多信息请参见“ 开始使用 SQL 数据库项目扩展 ”和 “从命令行构建数据库项目”。
使用 dbt 进行迁移
如果你的 SQL Server 数据仓库使用 dbt,则可以通过更改目标配置文件和适配器,使用适用于 Fabric Data Warehouse 的 dbt 适配器来转换架构和数据库代码。
DBT框架从模型文件生成DDL和DML脚本。 您必须通过使用 Data Factory 或其他本文中的其他数据迁移选项单独迁移数据。
若要开始,请参阅教程:为 Fabric Data Warehouse 设置 dbt。
将数据引入到 Fabric Data Warehouse
对于暂存数据,可以使用 COPY INTO 或 Fabric Data Factory 将 ADLS Gen2 中的文件引入 Fabric Data Warehouse。 请参考以下指导:
- 当源数据库和网络容量充足时,并行提取大型表。
- 优先使用 Parquet 文件,以减少存储占用和网络资源消耗,并提高数据引入效率。
- 当 Fabric 容量能支持工作负载时,同时加载多个目的表。
- 监控源提取和 Fabric 容量,以找到最佳并行度。