Jos*_*h L 4 azure-sql-server azure-managed-identity azure-data-lake-gen2 azure-synapse
我已在 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
Run Code Online (Sandbox Code Playgroud)
使用 synapse studio 或 SSMS 中的 Azure AD 凭据查询此视图没有任何问题。当我尝试使用 SQL 管理员帐户进行查询时,出现以下错误:
找不到凭据“https://test123.dfs.core.windows.net/devicetelemetry/////*/ ” ,因为它不存在或您没有权限。
重要的是,我能够使用 SQL 管理凭据进行查询,因为我们希望通过应用程序查询此视图以获取各种报告,因此不想使用 AAD 凭据。
我已经尝试过这里提供的SO解决方案:GRANT Database Scoped Credential语法给出不匹配的输入错误
GRANT REFERENCES ON DATABASE SCOPED CREDENTIAL::[WorkspaceSystemIdentity] TO [sqlAdmin];
Run Code Online (Sandbox Code Playgroud)
由于这似乎是在将我的 DataLake 链接到 Synapse 时创建的默认凭据,但是在针对我的视图所在的数据库运行时,这会给我带来以下错误:
找不到数据库范围的凭据“WorkspaceSystemIdentity”,因为它不存在或您没有权限。
您需要创建服务器范围的凭据以允许访问存储文件。
当 SQL 登录调用
OPENROWSET函数而不DATA_SOURCE读取某些存储帐户上的文件时,将使用这些。服务器范围的凭据的名称必须与 Azure 存储的基本 URL 匹配(后面可以跟容器名称)。但是,SQL 用户无法使用 Azure AD 身份验证来访问存储,并且无服务器 SQL 池不会返回子文件夹,除非您/**在路径末尾指定。
| 归档时间: |
|
| 查看次数: |
2921 次 |
| 最近记录: |