我的Azure AD中有两个用户(name@company.com)已通过Azure门户授予Azure服务器的所有者权限。
首先,是否可以创建一个登录/从Azure AD链接以获取这些登录凭据的登录?我已经搜索过,但没有找到具体的答案,尽管我的怀疑是否定的。
其次,我已经为同一个数据库创建了登录/用户,但是,当访问服务器很好时,拒绝访问数据库。我已经授予连接到登录以及为数据库执行sp_addrolemember作为datareader。在仔细检查我的工作时,我引用了几个示例,这些示例显示了我用于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'
答案 0 :(得分:3)
首先,是否可以创建从Azure AD链接/提取的登录 这些登录凭据?我搜索过但没找到 具体的答案,虽然我的怀疑是否定的。
没有。在Azure SQL数据库中,您只能使用在Azure SQL数据库中创建的用户和登录 - SQL登录。
其次,我为同一个数据库创建了登录/用户,但是, 虽然访问服务器很好,但拒绝访问数据库。 我已经授予连接到登录以及执行 sp_addrolemember作为数据库的每个的datareader。双倍 检查我的工作,我引用了几个显示相同的例子 语法我用于Azure登录/用户,但仍然访问 拒绝。
Logins
应在主数据库中创建,而users
,grants
和sp_addrolemember
应在中执行目标数据库的上下文。如果在Master数据库中执行了sp_addrolemember,则您的用户将无权访问目标db。
另外,重要的是,当您尝试使用新登录连接到数据库时(请注意,要使用login
而不是user
登录数据库),您必须明确选择这个新用户有权访问的数据库!
我猜测你已经在主数据库的上下文中执行了create user
,grant
和sp_addrolemember
。因此,这些用户现在只能访问master数据库。当您在master的上下文中时,不能向其他数据库授予显式授权。
答案 1 :(得分:1)
可以使用Azure AD用户访问Azure SQL DB: https://azure.microsoft.com/en-us/documentation/articles/sql-database-aad-authentication/
答案 2 :(得分:-1)
您无法使用AD用户登录SQL服务器。必须在master数据库中创建登录,并且您需要使用该登录通过连接用户数据库来创建用户和权限授予。但是,SQL DB V12支持包含的用户,您不再需要在主服务器中创建登录。登录可以在用户数据库上下文中执行,如果您为Azure中的数据库设置Geo Replication(使用时间点还原功能还原),这将非常有用。根据我的经验,我建议在Azure数据库中包含用户。