我的Azure AD中有两个用户(name@company.com)已通过Azure门户授予Azure服务器的所有者权限。
首先,是否有可能为这些登录凭据创建一个从Azure AD链接/提取的登录?我已经搜索过了,还没有找到一个具体的答案,尽管我怀疑是没有。
第二,我已经为同一个数据库创建了登录/用户,然而,虽然访问服务器是好的,但访问数据库被拒绝。我已经授予连接到登录,并执行sp_addrolemember作为数据库的每个数据读取器。在仔细检查我的工作时,我引用了几个例子,这些例子显示了我为Azure登录/用户使用的相同语法,但访问仍然被拒绝。
如有任何帮助,不胜感激。
史蒂夫。代码:
CREATE LOGIN [login_name]
WITH PASSWORD = N'password'
CREATE USER [user_name]
FROM LOGIN [login_name]
WITH DEFAULT_SCHEMA = dbo
GO
GRANT CONNECT TO [user_name]
EXEC sp_addrolemember 'db_datareader', 'user_name'
首先,是否有可能创建一个登录链接/从Azure AD对于这些登录凭据?我找过了,还没找到具体的答案,虽然我怀疑是没有。
。在Azure SQL数据库中,您只能使用在Azure SQL数据库- SQL登录中创建的用户和登录名。
第二,我已经为同一个数据库创建了登录/用户,然而,虽然可以访问服务器,但是拒绝访问数据库。我已经授予连接到登录以及执行Sp_addrolemember作为每个数据库的数据读取器。在双检查我的工作,我引用了几个例子,显示相同的我正在为Azure登录/用户使用语法,但访问仍然是否认。
Logins
应该在主db中创建,而users
, grants
和sp_addrolemember
应该在目标db上下文中执行。如果在主数据库中执行sp_addrolemember,则用户将无法访问目标数据库。
另外,重要的是,当您尝试使用新的登录名连接到DB时(请注意,要登录到DB,您使用login
而不是user
),您必须显式地选择该新用户有权访问的数据库!
我大胆的猜测是,您已经在主数据库的上下文中执行了create user
、grant
和sp_addrolemember
。因此,这些用户现在只能访问主数据库。当您处于master的上下文中时,您不能向其他数据库授予显式授权。
可以使用Azure AD用户访问Azure SQL DB:https://azure.microsoft.com/en-us/documentation/articles/sql-database-aad-authentication/
不能使用AD用户登录SQL server。必须在主数据库中创建登录,并且需要使用该登录通过连接用户数据库来创建用户和权限授予。然而,SQL DB V12支持包含用户,您不再需要在主数据库中创建登录。登录可以在用户数据库上下文本身中执行,如果您在Azure中为数据库设置地理复制(使用时间点恢复功能进行恢复),这将非常有用。根据我的经验,我建议在Azure数据库中包含用户。