我正在SQL Azure上创建一个新的读/写用户,如下所示:
-- Connected to master
create login [fred] with password = 'xxx';
-- Connected to my DB
create user [fred] from login fred;
EXEC sp_addrolemember 'db_datareader', 'fred';
EXEC sp_addrolemember 'db_datawriter', 'fred';
当我使用SSMS登录时,出现错误Cannot open database "master" requested by the login. The login failed.
我做错了什么或错过了什么?
答案 0 :(得分:78)
默认情况下,SSMS会尝试连接到master,但您的新帐户无权访问master;只有我认为的用户数据库。
在SSMS的登录界面,您还需要指定数据库名称;只需点击选项>> 图标,即可打开“连接属性”标签。在那里,指定您尝试连接的数据库名称。
答案 1 :(得分:30)
在特定数据库Database1中创建数据库用户后, 再次选择'master'并创建数据库用户。 执行以下语句两次 - 一个用于Database1,另一个用于'master'
CREATE USER appuser1 FROM LOGIN appuser1;
不幸的是,Azure帮助中没有记录这一点 http://msdn.microsoft.com/en-us/library/windowsazure/ee336235.aspx
答案 2 :(得分:10)
- >打开master数据库的新查询窗口并执行此命令
CREATE LOGIN AppLogin WITH password='XXXXXX'
GO
CREATE USER [AppUser] FOR LOGIN [AppLogin] WITH DEFAULT_SCHEMA=[dbo]
GO
- >打开您的数据库的新查询窗口
CREATE USER [AppUser] FOR LOGIN [AppLogin] WITH DEFAULT_SCHEMA=[dbo]
GO
EXEC sp_addrolemember 'db_owner', 'AppUser';
GO
Source: How to create custom user login for Azure SQL Database
答案 3 :(得分:2)
正如Karol在Herve Roggero的回复中评论的那样,即使选择了数据库,我也遇到了同样的问题。
在数据库中运行以下脚本后,我们想为每个用户连接:
GRANT CONNECT TO [ourDbUser]
我们刷新了数据库的用户,现在他们已经启用了,然后我们就能够成功连接到数据库。
答案 4 :(得分:1)
对我来说,问题在于在数据库上创建用户的人员没有指定FROM LOGIN
,因此该用户在“安全性”->“用户”选项卡中可用,但仍然无法登录。我必须重新创建用户,并将其链接到数据库上具有相同名称的登录名:
DROP USER [myuser]
GO
CREATE USER [myuser] FROM LOGIN [myuser] WITH DEFAULT_SCHEMA=[dbo]
GO
,然后以我为例,授予对数据库的正确权限:
ALTER ROLE db_datareader ADD MEMBER [myuser]
ALTER ROLE db_datawriter ADD MEMBER [myuser]
答案 5 :(得分:0)
其他可能导致您绊倒的原因: