我想使用 Entra 服务主体创建数据库范围的凭据。 我们希望使用此凭据从另一个 Azure SQL 数据库挂载外部表。
支持此功能吗? 如果是,AuthorityUrl 的确切格式是什么?
CREATE DATABASE SCOPED CREDENTIAL [<CredentialName>] WITH
IDENTITY = '<AppID>@<AuthorityUrl>'
, SECRET = '<Secret>'
GO
尝试了一切,但无法使其发挥作用。 当尝试从外部表读取时,我总是收到以下错误:
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Cannot open server "login.microsoftonline.com/<tenant_id>/oauth2/token" requested by the login.
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]无法打开登录请求的服务器“login.microsoftonline.com/
/oauth2/token”。
根据MS文档,
仅在使用 SQL Server 身份验证连接时才支持弹性查询。
服务主体身份验证不支持azure SQL数据库中的跨数据库查询。您可以按如下方式使用 SQL Server 身份验证:
如果您有两个示例 Azure SQL 数据库,
db
和 db1
。使用以下代码在 db1
数据库中创建主密钥和范围凭证:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Password>';
CREATE DATABASE SCOPED CREDENTIAL <name> WITH IDENTITY = '<userName>',
SECRET = '<Password>';