无法使用系统分配托管标识将 Azure 逻辑应用连接到 Azure SQL Server

Sea*_*ude 2 azure-logic-apps azure-sql-database azure-managed-identity

我不确定我在这里缺少什么,但我无法从逻辑应用连接到 Azure SQL。任何帮助表示赞赏。

执行的步骤:

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

在此输入图像描述

Contributor2. 在SQL Server 的角色中添加 SAMI (位于另一个资源组中)

在此输入图像描述

3. 单击按钮验证 SAMIAzure role assignments角色

在此输入图像描述

4.使用以下命令在 SQL Server 本身内的db_datareader和角色中添加 SAMI :db_datawriter

CREATE USER [SAMI Name] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [SAMI Name]
ALTER ROLE db_datawriter ADD MEMBER [SAMI Name]
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

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'.
Run Code Online (Sandbox Code Playgroud)

我已在 SQL Server 上允许使用 Azure 服务,所以我不明白为什么会发生这种情况

在此输入图像描述

Sea*_*ath 5

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

我经历了和你完全相同的症状。手动输入数据库名称后,表名称列表将自动填充。

我还发现没有必要将 SAMI 添加为 SQL Server 的贡献者(至少对于这个特定的解决方法来说不是)。

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

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