【发布时间】:2020-10-25 07:57:38
【问题描述】:
我正在尝试按照https://docs.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-ver15#f-importing-data-from-a-file-in-azure-blob-storage 中的步骤使用托管标识选项将数据从 CSV 文件加载到我的 Azure 数据库中的表中。当我运行查询时,我收到此错误:
Failed to execute query. Error: Referenced external data source "adfst" not found.
这是我在存储帐户中创建的容器的名称。我也尝试过使用我的存储帐户,但出现同样的错误。查看https://docs.microsoft.com/en-us/sql/relational-databases/import-export/examples-of-bulk-access-to-data-in-azure-blob-storage?view=sql-server-ver15 并不能进一步了解可能导致问题的原因。我的存储帐户没有配置公共(匿名)访问权限。
我假设我缺少一个可以解决此问题的简单项目,但我无法弄清楚它是什么。下面是我的 SQL 查询,已修改为不包含不需要的内容。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************';
GO
CREATE DATABASE SCOPED CREDENTIAL msi_cred WITH IDENTITY = '***********************';
CREATE EXTERNAL DATA SOURCE adfst
WITH ( TYPE = BLOB_STORAGE,
LOCATION = 'https://**********.blob.core.windows.net/adfst'
, CREDENTIAL= msi_cred
);
BULK INSERT [dbo].[Adventures]
FROM 'Startracker_scenarios.csv'
WITH (DATA_SOURCE = 'adfst');
【问题讨论】:
-
你是按照Shared Access Signature requirements创建的
msi_cred吗? -
@AlwaysLearning 否,因为我创建了一个托管身份。
-
您确定支持托管标识吗?文档说您需要 SAS。
-
@Crowcoder 是的,从我添加的第一个链接:“访问存储帐户的另一种方法是通过托管标识。为此,请按照步骤 1 到 3 配置 SQL 数据库以通过托管访问存储身份,之后您可以实现如下代码示例”。我发布的代码基于提到的代码示例。
标签: sql-server azure tsql azure-sql-database azure-blob-storage