无法批量加载。文件“ csv”不存在或您没有文件访问权限-Azure

时间:2018-10-08 13:36:24

标签: c# azure azure-sql-database azure-storage-blobs azure-managed-database

我正在尝试将文件从我的Azure Blob存储导入到Azure托管实例中。

所以首先我创建了一个外部数据源

CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH (  TYPE = BLOB_STORAGE, 
        LOCATION = 'https://abcd.blob.core.windows.net/testFolder/', 
);

然后将我的csv文件上传到Blob存储

当我尝试查询csv文件时,

SELECT * FROM OPENROWSET(
   BULK  'product.csv',
   DATA_SOURCE = 'MyAzureBlobStorage',
   SINGLE_CLOB) AS DataFile;

我知道了

  

消息4860,级别16,状态1,行99无法批量加载。文件   “ product.csv”不存在,或者您没有文件访问权限。

有人可以帮助我确定这里的问题吗?

1 个答案:

答案 0 :(得分:1)

请验证共享访问签名的开始和到期日期和时间。将开始日期设置为上周的任意一天。确认“允许的IP地址”字段为空。

SAS(共享访问签名)是如下创建的字符串:

  1. 在Azure门户中,转到您的存储帐户
  2. 按共享访问签名
  3. 填写字段(确保开始日期是几天前,并且您可以将“允许的IP地址”留空)
  4. 按“生成SAS”
  5. 在SAS令牌字段中复制字符串
  6. 要删除领导者吗?在将其粘贴到SQL脚本之前

在示例脚本下面。

CREATE DATABASE SCOPED CREDENTIAL BlobCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sv=SAS_TOKEN_HERE';


CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH (  TYPE = BLOB_STORAGE, 
        LOCATION = 'https://abcd.blob.core.windows.net/testFolder/',
CREDENTIAL = BlobCredential 
);