gpt4 book ai didi

sql-server - 突触外部表 "Unauthorized"

转载 作者:行者123 更新时间:2023-12-03 02:15:19 27 4
gpt4 key购买 nike

我已根据 ADLS Gen2 容器中存储的 parquet 文件在 Azure Synapse 中创建了一个外部表。我使用以下三个查询来创建数据源、文件格式和表:

CREATE EXTERNAL DATA SOURCE demo_external_datasource
WITH
( LOCATION = 'https://<Storage account>.dfs.core.windows.net/<container>'

)

CREATE EXTERNAL FILE FORMAT demo_parquet_file_format
WITH
(
FORMAT_TYPE = PARQUET
)

CREATE EXTERNAL TABLE <DATABASE>.<SCHEMA>.<TABLE NAME>
(
[infa_operation_time] nvarchar(4000),
[channel_key] bigint,
[channel_name] nvarchar(4000)

)
WITH (
LOCATION = '/<FOLDER>/',
DATA_SOURCE = demo_external_datasource,
FILE_FORMAT = demo_parquet_file_format

)

如果我将 Web 客户端 (Synapse studio) 与数据库管理员用户一起使用,我可以查询表并获取结果,但是当我尝试通过 SQL Server Management Studio 进行相同的连接时,它会抛出以下错误:

Not able to validate external location because The remote server returned an error: (401) Unauthorized.

我尝试连接数据库管理员和我的 Azure Active Directory 用户(Synapse 工作区和 ADLS 存储帐户的所有者),得到相同的结果。

谢谢。

最佳答案

我相信您需要创建一个 Database Scoped Credential到您的 ADLS 帐户:

CREATE DATABASE SCOPED CREDENTIAL AdlsCredentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE' ,
SECRET = '{yourSecret}'

然后在您的外部数据源声明中引用该内容:

CREATE EXTERNAL DATA SOURCE {yourEDSname}
WITH
(
LOCATION = 'https://{youradls}.blob.core.windows.net/{yourpath}/' ,
CREDENTIAL = AdlsCredentials
) ;

关于sql-server - 突触外部表 "Unauthorized",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71617320/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com