Azure Data Factory批量加载失败求助:无法打开存储文件
解决方案:Azure SQL批量加载ADLS CSV时错误码12(访问代码无效)
针对你遇到的SqlOperationFailed错误,核心问题是Azure SQL无法有效访问ADLS Gen2上的CSV文件,以下是针对性的排查和解决步骤:
验证ADLS访问凭证有效性
- 如果用的是SAS令牌,检查令牌是否过期,确保权限包含
Read和List(批量加载需要遍历目录的权限),避免只给了Read权限。 - 如果使用托管身份,确认Azure SQL的系统/用户托管身份已被授予ADLS Gen2目标容器的
Storage Blob Data Reader角色,而非普通的Reader角色(后者无数据访问权限)。
- 如果用的是SAS令牌,检查令牌是否过期,确保权限包含
核对文件路径与格式
- ADLS Gen2路径区分大小写,仔细检查容器名、文件夹层级、文件名的拼写和大小写是否完全匹配,比如
appointment和Appointment会被视为不同路径。 - 手动打开CSV文件确认没有损坏,比如是否存在乱码、不完整的行,或者分隔符/换行符不符合批量加载的预期。
- ADLS Gen2路径区分大小写,仔细检查容器名、文件夹层级、文件名的拼写和大小写是否完全匹配,比如
调整批量加载的SQL配置
- 尝试在批量加载语句中显式指定凭证,确保SQL使用正确身份访问ADLS:
BULK INSERT TargetTable FROM 'https://xxxxxxx.dfs.core.windows.net/dataverse-xxxxx-org5a2bcccf/appointment/2022-03.csv' WITH ( FORMAT = 'CSV', FIRSTROW = 2, -- 若文件含表头则启用 CREDENTIAL = [YourADLSCredential], FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ); - 取消勾选
Bulk lock选项重试,部分场景下锁机制会干扰凭证的正常传递。
- 尝试在批量加载语句中显式指定凭证,确保SQL使用正确身份访问ADLS:
检查网络与防火墙配置
- 确认Azure SQL的防火墙规则允许出站访问ADLS Gen2的公共端点;若为VNet环境,检查是否配置了ADLS的服务端点或VNet对等连接。
- 检查ADLS Gen2的防火墙设置,是否将Azure SQL的出站IP地址添加到允许列表中,避免被防火墙拦截。
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

