Azure AD user unable to connect to Azure SQL Error: 18456,State:1,Class:14
Azure AD user unable to connect to Azure SQL Error: 18456,State:1,Class:14
背景
用户在 Azure AD 和 Azure SQL 中定义。
test.user@company.com
在 Azure AD 中定义并处于活动状态。我可以在 Azure 门户中使用此用户登录。
- 我在 Azure SQL 数据库中使用“来自外部提供者”的子句创建了一个 包含的数据库用户 ,并将该用户添加到
db_datareader
系统角色。命令无误地提交。我比较了 Azure AD 中的资产 ID 和数据库中的 SID,它们匹配。我尝试过不同的用户。
- 我能够以分配给分配有“Active Directory Admin”的 SQL 服务器的 AD 用户身份登录
- SQL 服务器用户也可以正常登录
SSMS登录测试
我已将默认数据库设置为我尝试登录的特定数据库(选项-连接到数据库)。
我尝试过不同的身份验证模式:
- “Azure Active Directory – 通用 MFA”和
- “Azure Active Directory – 密码”
当我尝试使用 SSMS 登录时,我得到
Error: 18456, state 1, class 14.
当我查询[sys].[event_log]
它returns
[event_systype]= 4, [event_subtype_desc] = login_failed_for_user.
流程已完成
我在 Azure AD 中定义了一个用户。 (test.user@company.com)
在我的 Azure SQL 数据库中,我设置了一个 Active Directory 管理员。
我在 SSMS test.user@company.com 中创建了一个用户,语法如下:
CREATE USER [test.user@company.com] FROM EXTERNAL PROVIDER;
我已使用以下语法将用户分配给 db_datareader
角色:
ALTER ROLE db_datareader ADD MEMBER [test.user@company.com]
问题:当我尝试以 test.user@company.com
身份连接时,连接失败并且出现此错误:
Login Failed for user test.user@company.com
错误详情包含:
Error Number: 18456, State: 1, Class: 14
我试图在 docs.microsoft.com 上找到答案,用谷歌搜索并找到了一些有用的资源,但是 none 这实际上帮助我确定了解决问题的方法.如果有人知道我做错了什么,请参考 "PROCESS FOLLOWED" 我将永远感激 :)
我通过设置新数据库的变通方法解决了这个问题。
我没有找到问题的原因,但它一定与数据库设置“DTU”-“Basic”或一些我设法设置但不记得的设置有关。
无论如何,当我使用“DTU”-“标准”配置设置新数据库时,我的过程有效。
这似乎是某种编码问题。在几乎放弃并使用不同的数据库之后,我尝试创建一个新的数据库,但是没有一些特殊字符。突然间,它奏效了。
如果您无法更改数据库的密码,您可以在另一个编辑器中编辑连接字符串,它也可以正常工作(记事本、VS 代码等)。
背景
用户在 Azure AD 和 Azure SQL 中定义。
test.user@company.com
在 Azure AD 中定义并处于活动状态。我可以在 Azure 门户中使用此用户登录。- 我在 Azure SQL 数据库中使用“来自外部提供者”的子句创建了一个 包含的数据库用户 ,并将该用户添加到
db_datareader
系统角色。命令无误地提交。我比较了 Azure AD 中的资产 ID 和数据库中的 SID,它们匹配。我尝试过不同的用户。 - 我能够以分配给分配有“Active Directory Admin”的 SQL 服务器的 AD 用户身份登录
- SQL 服务器用户也可以正常登录
SSMS登录测试
我已将默认数据库设置为我尝试登录的特定数据库(选项-连接到数据库)。
我尝试过不同的身份验证模式:
- “Azure Active Directory – 通用 MFA”和
- “Azure Active Directory – 密码”
当我尝试使用 SSMS 登录时,我得到
Error: 18456, state 1, class 14.
当我查询[sys].[event_log]
它returns
[event_systype]= 4, [event_subtype_desc] = login_failed_for_user.
流程已完成
我在 Azure AD 中定义了一个用户。 (test.user@company.com)
在我的 Azure SQL 数据库中,我设置了一个 Active Directory 管理员。
我在 SSMS test.user@company.com 中创建了一个用户,语法如下:
CREATE USER [test.user@company.com] FROM EXTERNAL PROVIDER;
我已使用以下语法将用户分配给
db_datareader
角色:ALTER ROLE db_datareader ADD MEMBER [test.user@company.com]
问题:当我尝试以
test.user@company.com
身份连接时,连接失败并且出现此错误:Login Failed for user test.user@company.com
错误详情包含:
Error Number: 18456, State: 1, Class: 14
我试图在 docs.microsoft.com 上找到答案,用谷歌搜索并找到了一些有用的资源,但是 none 这实际上帮助我确定了解决问题的方法.如果有人知道我做错了什么,请参考 "PROCESS FOLLOWED" 我将永远感激 :)
我通过设置新数据库的变通方法解决了这个问题。 我没有找到问题的原因,但它一定与数据库设置“DTU”-“Basic”或一些我设法设置但不记得的设置有关。 无论如何,当我使用“DTU”-“标准”配置设置新数据库时,我的过程有效。
这似乎是某种编码问题。在几乎放弃并使用不同的数据库之后,我尝试创建一个新的数据库,但是没有一些特殊字符。突然间,它奏效了。
如果您无法更改数据库的密码,您可以在另一个编辑器中编辑连接字符串,它也可以正常工作(记事本、VS 代码等)。