求助:如何通过Azure Data Factory将本地文件导入Azure SQL数据库?
通过Azure Data Factory将本地文件导入Azure SQL数据库的操作方法及排障对策
一、完整操作流程
- 配置本地文件系统链接服务
- 进入Azure Data Factory Studio,左侧导航选择「管理」→「链接服务」→「新建」
- 搜索「文件系统」并选中,点击「继续」
- 配置参数:
- 自定义链接服务名称(如
LocalFileSystem_LS) - 选择自托管集成运行时:若未创建,点击「新建」下载安装包到本地机器,完成注册流程(必须用此运行时才能访问本地文件)
- 填写本地文件所在目录路径(如
D:\ImportFiles\) - 点击「测试连接」,确认成功后保存
- 自定义链接服务名称(如
- 配置Azure SQL数据库链接服务
- 在「链接服务」页面新建,搜索「Azure SQL数据库」并选中
- 配置参数:
- 自定义名称(如
AzureSQL_LS) - 选择目标Azure SQL服务器及数据库
- 选择身份验证方式(如SQL身份验证,输入对应用户名密码)
- 测试连接成功后保存
- 自定义名称(如
- 创建数据集
- 左侧导航选择「创作」→「数据集」→「新建」
- 本地文件数据集:选择「文件系统」链接服务,指定目标文件(或用通配符匹配批量文件),配置文件格式(CSV/Parquet等)、列映射规则,保存为
LocalSource_DS - Azure SQL数据集:选择「Azure SQL数据库」链接服务,指定目标表(无表可后续通过复制活动自动创建),保存为
AzureSQLTarget_DS
- 创建并运行复制活动
- 新建管道,添加「复制数据」活动
- 「源」选项卡:选择
LocalSource_DS,配置读取规则(如跳过首行、编码格式) - 「接收器」选项卡:选择
AzureSQLTarget_DS,设置写入行为(追加/覆盖/新建表) - 点击「调试」运行管道,通过监控页查看运行状态及日志
二、常见失败原因及解决对策
- 自托管集成运行时连接异常
- 检查本地机器上的自托管集成运行时服务是否处于运行状态,若未启动则手动启动
- 确认本地机器防火墙未拦截Azure Data Factory的出站请求,必要时添加ADF相关域名到白名单
- 若连接超时,重新注册自托管集成运行时,确保注册密钥与ADF中的配置一致
- 本地文件访问权限不足
- 默认自托管集成运行时使用Local System账户,检查该账户是否有本地文件目录的读取权限;若没有,将运行时服务账户替换为具备读写权限的本地/域账户
- 文件格式与数据集配置不匹配
- 对比实际文件与数据集的格式配置:CSV文件检查分隔符、是否包含引号/换行符,确认列数、数据类型匹配
- 通过数据集的「预览数据」功能验证列映射是否正确,排查缺失或格式错误的列
- Azure SQL数据库访问受限
- 确认链接服务使用的SQL账户具备目标表的写入权限(如INSERT、ALTER;新建表需CREATE TABLE权限)
- 在Azure门户的SQL服务器防火墙设置中,添加自托管集成运行时所在机器的公网IP地址,允许其访问SQL服务器
- 数据类型转换错误
- 进入复制活动的「映射」选项卡,检查源列与目标列的数据类型兼容性(如字符串转整数时需确保源数据无非数字值)
- 临时启用接收器设置中的「跳过错误行」选项,先完成部分数据导入,再通过日志定位具体错误数据并修正
内容的提问来源于stack exchange,提问作者user21510438
相关产品推荐
相关产品推荐

