我已在 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”,因为它不存在或您没有权限。