2

我在Azure AD中有两个用户([email protected]),这些用户已通过Azure门户授予了Azure服务器的所有者权限。使用Azure AD创建Azure SQL数据库登录/用户

首先,是否可以创建一个从Azure AD链接/提取这些登录凭据的登录名?我已经搜索过,并没有找到具体的答案,虽然我的怀疑是不。

其次,我为同一个数据库创建了登录名/用户,但是,在访问服务器的情况很好的情况下,数据库访问被拒绝。我已授予连接到登录以及执行sp_addrolemember作为datareader到数据库的每个。在仔细检查我的工作时,我引用了几个示例,这些示例显示了我用于Azure登录名/用户的相同语法,但访问仍然被拒绝。

任何帮助,将不胜感激。

Steve。

代码:

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' 

回答

3

首先,是否有可能创建一个登录从Azure的AD 这些登录凭据链接/拉?我已经搜索,并没有找到一个 特定的答案,虽然我怀疑是没有。

否。在Azure SQL数据库中,您只能使用在Azure SQL数据库 - SQL登录中创建的用户和登录名。

其次,我为同一个数据库创建了登录名/用户,但是,在访问服务器的情况下, 被拒绝访问数据库。 我已授予连接到登录以及执行 sp_addrolemember作为datareader到数据库的每个。在检查我的工作的双 中,我引用了几个示例,这些示例显示了我用于Azure登录名/用户的相同 语法,但仍拒绝访问 。

Logins应在主数据库创建,而usersgrantssp_addrolemember应该在目标DB的上下文中执行。如果您在Master数据库中执行了sp_addrolemember,您的用户将无法访问目标数据库。

此外,重要的是,当您尝试使用新登录连接到数据库时(并且请注意,要登录到使用login而不是user的数据库),您必须明确选择要将此数据库新用户有权访问!

我的胡乱猜测是,你已经在你的数据库的上下文中执行的create usergrantsp_addrolemember。因此这些用户现在只能访问主数据库。当您处于主控环境中时,您无法向其他数据库授予显式授权。

-1

您不能使用AD用户登录到SQL服务器。必须在主数据库中创建登录名,并且您需要使用该登录名通过连接用户数据库来创建用户和权限授予。但是,SQL DB V12支持包含用户,您不需要在主服务器中创建登录。登录可以在用户数据库上下文中执行,如果您为Azure中的数据库设置Geo Replication(用于恢复使用时间点恢复功能),这将非常有用。根据我的经验,我会推荐在Azure数据库中包含用户。