1

我正在尝试将我的 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”不存在或您没有文件访问权限。

有人可以帮我找出这里的问题吗?

4

1 回答 1

3

请验证共享访问签名的开始和到期日期和时间。将开始日期设置为上周的任何一天。验证“允许的 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 
);
于 2018-10-08T15:36:19.680 回答