You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure SQL Database中使用OPENROWSET读取XML文件失败求助

Azure SQL Database读取Azure存储XML文件报错排查方案

问题概述

使用OPENROWSET读取Azure存储账户中的XML文件时,报错:File '2025/02/01/FUL01of01.xml' cannot be opened because it does not exist or it is used by another process.,但同一容器下的CSV文件可正常读取,且XML文件实际存在于存储中。

排查与解决步骤

1. 核对文件路径大小写

Azure存储的Blob路径区分大小写,需确认代码中指定的路径2025/02/01/FUL01of01.xml与存储中实际文件的大小写完全一致(包括目录层级和文件名)。CSV文件可能因大小写匹配成功读取,而XML存在大小写差异导致报错。

2. 验证Managed Identity权限范围

虽然能读取CSV,仍需确认Managed Identity的权限覆盖XML文件所在层级:

  • 确保该身份拥有存储账户的Storage Blob Data Reader角色,且作用范围包含目标Blob、所在目录或容器
  • 若刚配置权限,需等待5-10分钟让RBAC权限生效

3. 调整OPENROWSET读取模式

尝试将SINGLE_BLOB替换为字符模式读取选项,适配XML的文本编码特性:

DECLARE @xml XML;

SELECT @xml = BulkColumn 
FROM OPENROWSET(
    BULK '2025/02/01/FUL01of01.xml', 
    DATA_SOURCE = 'myDataSource', 
    SINGLE_CLOB
) AS x;

SELECT @xml;

4. 排查Blob占用状态

Azure Blob默认无独占锁定,但需确认:

  • 是否有其他服务(如Data Factory、函数应用)正在写入该XML文件
  • 尝试重新上传XML文件,排除文件损坏或异常状态导致的读取失败

5. 测试简化路径读取

先读取容器根目录下的测试XML文件,排除多层路径的解析或权限问题:

DECLARE @xml XML;

SELECT @xml = BulkColumn 
FROM OPENROWSET(
    BULK 'test.xml', 
    DATA_SOURCE = 'myDataSource', 
    SINGLE_BLOB
) AS x;

SELECT @xml;

内容的提问来源于stack exchange,提问作者Sara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 14:45:59