无法将带有系统分配的托管标识的 Azure 逻辑应用程序连接到 Azure SQL 服务器

Unable to connect Azure Logic App w/ System Assigned Managed Identity to Azure SQL Server

我不确定我在这里遗漏了什么,但我无法从 Logic App 连接到 Azure SQL。感谢您的帮助。

执行的步骤:

1.为逻辑应用启用 System Assigned Managed Identity (SAMI)

2。在 SQL 服务器(它在另一个资源组中)

Contributor 角色中添加了 SAMI

3。通过单击 Azure role assignments 按钮

验证 SAMI 角色

4。在 SQL 服务器本身的 db_datareaderdb_datawriter 角色中添加了 SAMI 使用:

CREATE USER [SAMI Name] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [SAMI Name]
ALTER ROLE db_datawriter ADD MEMBER [SAMI Name]

5.验证内部角色是否成功:

SELECT DP1.name AS DatabaseRoleName,
    isnull (DP2.name, 'No members') AS DatabaseUserName
FROM sys.database_role_members as DRM
RIGHT OUTER JOIN sys.database_principals as DP1 
    ON DRM.role_principal_id = DP1.principal_id
LEFT OUTER JOIN sys.database_principals as DP2  
    ON DRM.member_principal_id = DP2.principal_id
WHERE DP1.type = 'R'
ORDER BY DP1.name;

6.在逻辑应用程序设计器中添加 Get Rows (V2) Azure SQL 操作并创建连接

7.我可以看到没有找到服务器,所以我输入 SQL 服务器名称作为自定义值

8.让数据库名称加载几分钟后,操作出错:

错误文本:

Could not retrieve values. Error code: 'Unauthorized', Message: 'Credentials are missing or not valid.
     inner exception: The credentials provided for the SQL source are invalid. (Source at xxx.database.windows.net.)
clientRequestId: da158fe9-xxx'. More diagnostic information: x-ms-client-request-id is 'B1CBF136-xxx'.

我在 SQL 服务器上允许了 Azure 服务,所以我不明白为什么会这样

我不确定这是什么原因,但我发现如果您还输入数据库名称作为自定义值,那么连接就可以正常工作。

我经历过和你完全一样的症状。手动输入数据库名称后,table 名称列表会自动填充。

我还发现没有必要将 SAMI 作为贡献者添加到 SQL 服务器(至少,对于这个特定的解决方法而言不是这样)。

输入自定义数据库名称之前:

输入自定义数据库名称后: