无法将带有系统分配的托管标识的 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_datareader
和 db_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 服务器(至少,对于这个特定的解决方法而言不是这样)。
输入自定义数据库名称之前:
输入自定义数据库名称后:
我不确定我在这里遗漏了什么,但我无法从 Logic App 连接到 Azure SQL。感谢您的帮助。
执行的步骤:
1.为逻辑应用启用 System Assigned Managed Identity
(SAMI)
2。在 SQL 服务器(它在另一个资源组中)
的Contributor
角色中添加了 SAMI
3。通过单击 Azure role assignments
按钮
4。在 SQL 服务器本身的 db_datareader
和 db_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 服务器(至少,对于这个特定的解决方法而言不是这样)。
输入自定义数据库名称之前:
输入自定义数据库名称后: