【问题标题】:Cannot find the CREDENTIAL because it does not exist or you do not have permission- Azure SQL Server找不到 CREDENTIAL,因为它不存在或您没有权限 - Azure SQL Server
【发布时间】:2022-01-26 15:58:37
【问题描述】:

我有一个 Azure SQL 数据库,我正在尝试创建一个外部数据源以将 CSV 数据从 Blob 存储加载到数据库。

我使用以下查询创建了一个数据库范围的凭据。

CREATE DATABASE SCOPED CREDENTIAL [https://forecaststorage01.blob.core.windows.net] 
WITH IDENTITY = 'SHARED ACCESS KEY',
 SECRET = 'SAS Token';

然后创建了一个外部数据源,

CREATE EXTERNAL DATA SOURCE [demodata]
    WITH (
        TYPE = BLOB_STORAGE,
        LOCATION = 'https://forecaststorage01.blob.core.windows.net',
        CREDENTIAL = [https://forecaststorage01.blob.core.windows.net]
    );

当我尝试运行以下查询时,

SET NOCOUNT ON;

BULK INSERT input.RawData
FROM 'csv-data/egypt_sales_data.csv'
WITH (DATA_SOURCE = 'demodata',
      FORMAT = 'CSV');

它说

“无法执行查询。错误:找不到凭据“https://forecaststorage01.blob.core.windows.net”,因为它不存在或您没有权限。'

然后我已使用以下查询向用户“dbo”授予对数据库范围凭据的访问权限,

GRANT CONTROL ON DATABASE SCOPED CREDENTIAL::[https://forecaststorage01.blob.core.windows.net] TO [dbo]

然后我再次尝试批量插入。但它仍然显示错误,

“无法执行查询。错误:找不到凭据“https://forecaststorage01.blob.core.windows.net”,因为它不存在或您没有权限。 "

为什么我无法访问数据库范围内的凭据?

【问题讨论】:

    标签: sql-server azure azure-sql-database bulkinsert


    【解决方案1】:

    如果您尝试在 Azure SQL 上运行第一条语句,您应该会收到错误:

    'CREATE CREDENTIAL' is not supported in this version of SQL Server.
    

    您必须使用CREATE DATABASE SCOPED CREDENTIAL 命令。还有IDENTITY必须SHARED ACCESS SIGNATURE 而不是“key”:

    CREATE DATABASE SCOPED CREDENTIAL [https://forecaststorage01.blob.core.windows.net] 
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
     SECRET = 'SAS Token';
    

    这应该可以解决您的问题

    【讨论】:

    • 试过了。还是不行。 :(。
    • 我刚刚又试了一次,效果很好……你遇到同样的错误吗?
    • 是的,我仍然遇到同样的错误。不知道为什么:(
    • 检查是否可以在系统表中找到凭据:select * from sys.database_scoped_credentials
    • 检查了表 sys.database_scoped_credentitals。它在那里可用。
    猜你喜欢
    • 2021-10-03
    • 1970-01-01
    • 2013-04-09
    • 2010-11-11
    • 2016-11-22
    • 2015-05-27
    • 2010-12-08
    • 2017-03-19
    • 2021-07-22
    相关资源
    最近更新 更多