【发布时间】: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 用户,这就是我认为我错过了以某种方式授予该用户访问数据库范围凭据的步骤。
步骤,我创建了具有所需凭据的外部表:
- 创建数据库范围凭据以访问 Blob 存储中的数据
CREATE DATABASE SCOPED CREDENTIAL datalake_credentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'SAS TOKEN';
- 使用在上一步中创建的凭据创建外部数据源
CREATE EXTERNAL DATA SOURCE datalake_raw_marketing
WITH ( LOCATION = 'https://mydatalake.blob.core.windows.net/raw/marketing'
, CREDENTIAL= [datalake_credentials]
);
- 最后使用数据源创建外部表
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