sql-server - 仅与 Active Directory 建立连接...用户登录失败'
问题描述
我正在尝试为 Azure SQL 数据库启用 Active Directory 访问。但我遇到了一个鸡蛋问题:
- 在我的 SQL 数据库的属性选项卡上,Active Directory 管理员显示我所属的 AD 用户组
- 我不能登入。如果我尝试使用此 AD 用户连接到我的数据库,无论是通过查询编辑器(预览)选项卡还是通过 SSMS,我都会收到“用户登录失败”。
- 如果我使用服务器管理员登录或通过 SQL 帐户登录,我可以登录,但我无法执行 CREATE USER myname FROM EXTERNAL PROVIDER。它返回“只有与 Active Directory 帐户建立的连接才能创建其他 Active Directory 用户”
我是如何制造这个烂摊子的?
在 Azure 上,我已经有一个带有 SQL 数据库的 SQL Server。我可以使用我的 Active Directory 帐户登录到该服务器。我有一个本地数据库,在 SSMS 中我选择了“将数据库部署到 Microsoft Azue SQL 数据库...”并选择了我现有的 SQL Server。
据我了解,AAD 需要了解 SQL 服务器,而不是每个单独的 SQL 数据库。如果我对我的主数据库进行时间点还原,我还可以使用我的 AAD 帐户访问该数据库。但是当然,这个数据库已经包含了活动目录用户组。
所以 Azure 认为我可以使用我的 AAD 帐户登录到数据库,但数据库本身不知道任何 AAD 帐户。而且我只能在使用 AAD 帐户登录时在数据库中创建 AAD 帐户。
如何在不使用 Active Directory 帐户登录的情况下在我的数据库中创建 Active Directory 帐户?
解决方案
如何在不使用 Active Directory 帐户登录的情况下在我的数据库中创建 Active Directory 帐户?
不,我们不能。在 Azure SQL 数据库中,首先需要为 SQL Server 配置 Azure AD 管理员,然后使用 AAD 管理员帐户登录数据库以创建 AAD 用户。
我想你已经配置好了。正如您所说,您可以使用 AAD 帐户登录。这是 Azure AD 管理员帐户。它具有访问所有数据库的权限。
重要的:
- 若要创建映射到 Azure AD 身份的包含用户,您必须使用作为 Azure SQL 数据库中数据库管理员的 Azure AD 帐户登录。在 SQL 托管实例中,具有 sysadmin 权限的 SQL 登录也可以创建 Azure AD 登录或用户。
推荐阅读
- c - 为什么在一行上声明变量会产生意想不到的结果?
- ios - iOS,我可以知道我是否有使用 CallKit 的来电吗?(不是网络电话)
- reactjs - NextJS,如何将服务器端呈现的应用程序上传到我的 FTP 帐户
- javascript - 在 Blade Foreach 循环中动态隐藏元素
- python - Numpy 在 Spyder 3.8 (Python 3) 中不起作用
- ios - Swift:确定类型是否符合协议导致错误
- c# - 如何将图像放入合并的单元格中
- kubernetes - Kubernetes 的 Pod 无法访问外部 MySQL 服务器
- python - Pandas group by 将不同的行转换为一行(多列)
- ios - 使用 Carthage 而不是 CocoaPods 在范围内找不到“FirebaseApp”