无法使用 SQL 管理凭据查询 Azure Synapse 中的无服务器池视图

2024-01-09

我已在 Azure Synapse 中设置了一个无服务器 SQL 池,该池正在查询我为链接的 Azure Data Lake 设置的视图。

CREATE VIEW DeviceTelemetryView
AS SELECT corporationid, deviceid, version, Convert(datetime, dateTimestamp, 126) AS dateTimeStamp, deviceData FROM
   OPENROWSET(
       BULK 'https://test123.dfs.core.windows.net/devicetelemetry/*/*/*/*/*/',
       FORMAT = 'PARQUET'
    ) AS [result]
GO

使用 synapse studio 或 SSMS 中的 Azure AD 凭据查询此视图没有任何问题。当我尝试使用 SQL 管理员帐户进行查询时,出现以下错误:

找不到凭据“https://test123.dfs.core.windows.net/devicetelemetry/”////*/',因为它不存在或者您没有权限。

重要的是,我能够使用 SQL 管理凭据进行查询,因为我们希望通过应用程序查询此视图以获取各种报告,因此不想使用 AAD 凭据。

我已经尝试过这里提供的SO解决方案:GRANT 数据库范围凭据语法给出不匹配的输入错误 https://stackoverflow.com/questions/70253872/grant-database-scoped-credential-syntax-gives-mismatched-input-error

GRANT REFERENCES ON DATABASE SCOPED CREDENTIAL::[WorkspaceSystemIdentity] TO [sqlAdmin];

因为这似乎是在将我的 DataLake 链接到 Synapse 时创建的默认凭据,但是在针对我的视图所在的数据库运行时,这会给我带来以下错误:

找不到数据库范围的凭据“WorkspaceSystemIdentity”,因为它不存在或您没有权限。


你需要创建服务器范围的凭据 https://learn.microsoft.com/en-us/azure/synapse-analytics/sql/develop-storage-files-storage-access-control#examples以允许访问存储文件。

服务器范围的凭据 https://learn.microsoft.com/en-us/azure/synapse-analytics/sql/develop-storage-files-storage-access-control?tabs=user-identity#server-scoped-credential

这些在 SQL 登录调用时使用OPENROWSET功能无DATA_SOURCE读取某些存储帐户上的文件。的名字 服务器范围的凭证must匹配 Azure 存储的基本 URL (可选地后跟容器名称)。然而,SQL 用户不能 使用 Azure AD 身份验证访问存储,无服务器 SQL 池不会返回子文件夹,除非您指定/**在路径的尽头。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 SQL 管理凭据查询 Azure Synapse 中的无服务器池视图 的相关文章

随机推荐