【问题标题】:Cannot find the CREDENTIAL '<db_scoped_creds>', because it does not exist or you do not have permission找不到 CREDENTIAL '<db_scoped_creds>',因为它不存在或您没有权限
【发布时间】:2021-10-03 19:58:59
【问题描述】:

我使用此处指定的步骤创建了外部表:https://docs.microsoft.com/en-us/azure/synapse-analytics/sql/develop-storage-files-storage-access-control?tabs=shared-access-signature。

在 Synapse 工作区中,我能够访问外部表数据(因为它使用我的 AD 凭据)。但是,它不能在外部平台上工作,在这种情况下是 redash。为了从 redash 访问数据,我创建了一个 db 用户,这就是我认为我错过了以某种方式授予该用户访问数据库范围凭据的步骤。

步骤,我创建了具有所需凭据的外部表:

  1. 创建数据库范围凭据以访问 Blob 存储中的数据
CREATE DATABASE SCOPED CREDENTIAL datalake_credentials
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
    SECRET = 'SAS TOKEN';
  1. 使用在上一步中创建的凭据创建外部数据源
CREATE EXTERNAL DATA SOURCE datalake_raw_marketing
WITH ( LOCATION = 'https://mydatalake.blob.core.windows.net/raw/marketing'
          , CREDENTIAL= [datalake_credentials]
);
  1. 最后使用数据源创建外部表
CREATE EXTERNAL TABLE [dbo].[Customers]
(
    [Id] [varchar](36),
    [FirstName] [varchar](100),
    [Email] [varchar](100),
    [Date] [varchar](100),
    [Group] [varchar](100)
)
WITH (DATA_SOURCE = [datalake_raw_marketing], LOCATION = N'sub_dir/customer_list_*.csv',FILE_FORMAT = [QuotedCsvWithHeaderFormat])
GO

使用此页面上的信息https://docs.microsoft.com/en-us/azure/synapse-analytics/sql/develop-storage-files-storage-access-control?tabs=shared-access-signature 我尝试了“授予使用凭据的权限”:

GRANT REFERENCES ON CREDENTIAL::[datalake_credentials] TO [redash];

但它总是会导致:

找不到 CREDENTIAL 'datalake_credentials',因为它不存在或您没有权限。

【问题讨论】:

    标签: azure azure-synapse


    【解决方案1】:

    您的凭据是 DATABASE SCOPED,因此您需要将其包含在语句中:

    GRANT REFERENCES ON DATABASE SCOPED CREDENTIAL::[{credential_name}] TO [{user}];
    

    【讨论】:

    • 感谢伙计,成功了!我正在挖掘文档,但从未遇到过这个,你有任何参考/文档吗?
    • 很遗憾,没有 - IIRC,我遇到了同样的问题,Synapse 团队的某个人给了我这个解决方案。
    猜你喜欢
    • 1970-01-01
    • 2013-04-09
    • 2016-11-22
    • 2015-05-27
    • 2010-12-08
    • 2017-03-19
    • 2021-07-22
    • 1970-01-01
    • 2013-10-01
    相关资源
    最近更新 更多