簡體   English   中英

找不到憑據,因為它不存在或您沒有權限 - Azure SQL 服務器

[英]Cannot find the CREDENTIAL because it does not exist or you do not have permission- Azure SQL Server

我有一個 Azure SQL 數據庫,我正在嘗試創建一個外部數據源以將 CSV 數據從 blob 存儲加載到數據庫。

我使用以下查詢創建了一個數據庫范圍的憑據。

CREATE  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]

然后我嘗試再次批量插入。 但它仍然顯示錯誤,

“無法執行查詢。錯誤:找不到 CREDENTIAL 'https://forecaststorage01.blob.core.windows.net',因為它不存在或您沒有權限。”

為什么我無法訪問數據庫范圍的憑據?

如果您嘗試在 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';

那應該可以解決您的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM