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

如何为Azure SQL托管实例配置权限以通过BULK INSERT读取Azure Files文件?

使用Azure Files为Azure SQL托管实例配置BULK INSERT权限

Azure SQL托管实例支持通过SMB协议访问Azure Files执行BULK INSERT,不像SQL Database仅局限于Blob存储。以下是完整配置步骤:

1. 打通网络连接

确保Azure SQL托管实例与目标Azure Files存储账户处于同一VNet,或通过VNet对等连接、私有端点建立连通:

  • 若不在同一VNet,为Azure Files配置私有端点,确保托管实例所在VNet可访问该端点IP。
  • 检查NSG规则,允许托管实例所在子网向Azure Files的SMB端口(445)发起出站请求。

2. 创建数据库范围凭据

根据所选身份验证方式创建对应凭据:

方式1:使用存储账户密钥

CREATE DATABASE SCOPED CREDENTIAL [AzureFilesCred]
WITH IDENTITY = 'your-storage-account-name', -- 替换为你的存储账户名称
SECRET = 'your-storage-account-primary-key'; -- 替换为存储账户主密钥

方式2:使用共享访问签名(SAS)

CREATE DATABASE SCOPED CREDENTIAL [AzureFilesCred]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'your-sas-token-with-file-permissions'; -- 替换为带文件共享读写权限的SAS令牌

3. 创建外部数据源

指向你的Azure Files共享:

CREATE EXTERNAL DATA SOURCE [AzureFilesSource]
WITH (
    TYPE = FILE_SYSTEM,
    LOCATION = '\\your-storage-account-name.file.core.windows.net\your-file-share-name', -- 替换为你的存储账户和共享名称
    CREDENTIAL = [AzureFilesCred]
);

4. 执行BULK INSERT

调用命令加载目标文件:

BULK INSERT YourTargetTable
FROM 'relative-path-to-your-file.csv' -- 替换为文件在共享内的相对路径
WITH (
    DATA_SOURCE = 'AzureFilesSource',
    FORMAT = 'CSV', -- 根据实际文件格式调整
    FIRSTROW = 2, -- 若文件含表头则跳过第一行
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n'
);

额外注意事项

  • 生产环境推荐使用Azure AD身份验证:给托管实例的系统分配托管身份分配Storage File Data SMB Share Contributor角色,此时凭据的IDENTITY填Azure AD,SECRET留空。
  • 方案对比:直接使用Azure Files的方案无需本地中转,更高效且减少维护成本;定时azcopy上传的方案适合临时过渡,但长期需维护定时任务与本地存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:05:23