背景
用户在 Azure AD 和 Azure SQL 中定义。
[email protected]
在 Azure AD 中定义并处于活动状态。我可以在 Azure 门户中使用该用户登录。db_datareader
系统角色。命令提交没有错误。我比较了 Azure AD 中的资产 ID 和数据库中的 SID,它们匹配。我尝试过不同的用户。SSMS 中登录测试
我已将默认数据库设置为我尝试登录的特定数据库(选项-连接到数据库)。
我尝试过不同的身份验证模式:
当我尝试使用 SSMS 登录时,我得到了
错误:18456,状态 1,类别 14。
当我查询
[sys].[event_log]
时,它会返回
[event_systype]= 4,[event_subtype_desc] = login_failed_for_user。
流程如下
我在 Azure AD 中定义了一个用户。 ([电子邮件受保护])
在我的 Azure SQL 数据库中,我设置了 Active Directory 管理员。
我已在 SSMS [email protected] 中创建了一个用户,语法如下:
CREATE USER [[email protected]] FROM EXTERNAL PROVIDER;
我已使用以下语法将用户分配给
db_datareader
角色:
ALTER ROLE db_datareader ADD MEMBER [[email protected]]
问题:当我尝试以
[email protected]
身份连接时,连接失败并收到此错误:
用户登录失败 [电子邮件受保护]
错误详情包含:
错误号:18456,状态:1,类别:14
我试图在 learn.microsoft.com 上找到答案,在谷歌上搜索并找到了一些有用的资源,但没有一个能真正帮助我确定如何解决该问题。如果有人知道我做错了什么,请参考“流程遵循”我将永远感激不已:)
我通过解决方法解决了这个问题,设置了一个新的数据库。 我没有找到问题的原因,但它一定与数据库设置“DTU”-“基本”或我在不记得的情况下设法设置的某些设置有关。 无论如何,当我使用“DTU”-“标准”配置设置新数据库时,我的过程有效。
这似乎是某种编码问题。在几乎放弃并使用不同的数据库之后,我尝试创建一个新的数据库,但是没有一些特殊字符。突然间,它起作用了。
如果您无法更改数据库的密码,您可以在另一个编辑器中编辑连接字符串,它也可以工作(记事本、VS代码等)。
我们需要在安全->网络下设置防火墙设置,并为您的 IP 地址启用它可以解析错误号:18456,状态:1,类别:14