我有一个Azure SQL Server,可以将SSMS加入其中。我还有一个Azure Active Directory,其用户名为mytestuser@mytest.onmicrosoft.com。我想添加此用户以获取Azure SQL Server中数据库的权限。第一步是尝试将其添加到Azure SQL Server的主要安全性中。
我在主数据库上尝试了以下内容:
CREATE USER [mytestuser@mytest.onmicrosoft.com] FROM EXTERNAL PROVIDER;
CREATE USER mytestuser;
但这会产生以下错误:
校长' mytestuser@mytest.onmicrosoft.com'无法创建。 只能与Active Directory帐户建立连接 其他Active Directory用户。
和
' mytestuser'不是有效登录,或者您没有权限。
如何将Azure Active Account添加到Azure SQL?一旦我通过Master添加它以便它显示在Security中,我应该能够通过以下方式将它添加到任意数量的已创建数据库中:
CREATE USER mytestuser FROM LOGIN mytestuser;
答案 0 :(得分:2)
我能够连接并添加Active Directory用户,但需要以下内容:
1)SQL Server Management Studio 2016或更高版本具有Active Directory登录选项(我使用Active Directory密码验证)
2)确保Azure SQL Server具有Azure Active Directory管理员集。您将此帐户连接到第1步
答案 1 :(得分:1)
在一天中浪费了4个小时尝试这样做之后,以下是对我有用的步骤:
我不敢相信我花了将近两个工作日来尝试做一些简单的事情,比如将用户添加到数据库中。这是难以置信的。 (/ rantover)
答案 2 :(得分:1)
对我来说,有一个技巧,您可以在使用Active Directory-Integrated的SSMS中执行一些步骤,并使用本地SQL身份验证来执行一些步骤。这是对我有用的东西:
我在Azure Sql Server功能屏幕中设置了用于“ Active Directory管理员”设置的域帐户。然后,我可以使用在此帐户下运行的SSMS进行连接。
注意:为了简化以其他用户身份运行SSMS的过程,我使用了runas: C:\ Windows \ System32 \ runas.exe / savecred /user:YourAdAdminUser@YourDomain.com“ C:\ Program Files(x86)\ Microsoft SQL Server Management Studio 18 \ Common7 \ IDE \ Ssms.exe” < / p>
以该用户身份运行时,我使用SSMS身份验证选项“ Active Directory-Integrated”进行了连接。从这里,我在主数据库中运行以下命令:
CREATE USER [YourAdAdminUser@YourDomain.com] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo
然后,我使用本地SQL身份验证连接到SSMS中的同一服务器,并使用设置为Azure Sql Server实例的“服务器管理员”的帐户登录。从这里,我在主数据库中运行了alter role命令:
ALTER ROLE dbmanager ADD MEMBER [YourAdAdminUser@YourDomain.com]
ALTER ROLE loginmanager ADD MEMBER [YourAdAdminUser@YourDomain.com]
现在,我可以回到以AD Admin用户身份运行的SSMS,然后可以从上面运行CREATE USER命令,但对于其他域帐户:
CREATE USER [OtherAccount@YourDomain.com] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo
您可以决定运行哪个数据库(例如,master数据库和非系统数据库)。
域用户现在可以使用“ Active Directory-集成”登录。请注意,如果添加为MFA配置的域用户,则对于该用户,使用SSMS登录,他们应该选择SSMS身份验证选项“ Azure Active Directory-具有MFA的通用身份”,并且其用户名应带有“ @”不是反斜杠。
答案 3 :(得分:1)
对于那些使用pyodbc代替SSMS的人
转到Azure门户,
查找服务器
“ Active Directory管理员”,
将“管理员”设置为some.body@domain.com,
登录到您要授予访问权限的数据库:
from pyodbc import connect,drivers
conn = connect(driver=drivers()[0],
server='someserver.database.windows.net',
database='somedb',
Authentication='ActiveDirectoryPassword',
user='some.body@domain.com',
PWD='somepassword')
cursor = conn.cursor()
将用户添加到sql数据库
cursor.execute("CREATE USER [someone.else@anydomain.com] FROM EXTERNAL PROVIDER;")
conn.commit()
授予读取权限:
cursor.execute("EXEC sp_addrolemember 'db_datareader', 'someone.else@anydomain.com';")
conn.commit()
答案 4 :(得分:1)
我遇到了同样的问题,并使用Azure CLI和sqlcmd解决了该问题。我无法使sql management studio零件正常工作,因为它一直抱怨我的设备未获批准,但是,使用命令行工具也是如此!
# Get objectId of the user you want to be admin
objectid=$(az ad user list --filter "userPrincipalName eq 'youruser@yourdomain.dk'" --query [0].objectId -o tsv)
# Setting user as admin
az sql server ad-admin create --display-name youruser@yourdomain.dk --object-id $(objectid) --resource-group yourresourcegroup --server sqlservername --subscription "Subscription name or id"
我在Ubuntu上使用了SQL命令行工具,可以使用documentation进行安装。
# Installing SQL command line on Ubuntu 20.04
sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17
sudo ACCEPT_EULA=Y apt-get install mssql-tools
# Logging in to Azure SQL (-G means that you use Azure AD)
/opt/mssql-tools/bin/sqlcmd -U youruser@yourdomain.dk -P yourpassword -S sqlservername.database.windows.net -d master -G
# Creating a user (If using SSMS, you may experience problems)
1>CREATE USER [newuser@yourdomain.dk] FROM EXTERNAL PROVIDER;
2>GO