新用户无法登录SQL Azure

Sea*_*ron 52 azure-sql-database

我在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';
Run Code Online (Sandbox Code Playgroud)

当我使用SSMS登录时,我收到错误消息 Cannot open database "master" requested by the login. The login failed.

我做错了什么或错过了什么?

Her*_*ero 86

默认情况下,SSMS尝试连接到master,但您的新帐户无权访问master; 只有我认为的用户数据库.

在SSMS的登录屏幕上,您还需要指定数据库名称; 只需单击选项>>图标,即可打开"连接属性"选项卡.在那里,指定您尝试连接的数据库名称.

  • 我试过这样做,但我仍然得到同样的错误.我也必须从登录master上创建用户.就像雷迪的回答如下 (3认同)
  • 可以这么说,但是这个“`默认情况下,SSMS 尝试连接到 master`”是完全错误的!SSMS 不选择默认数据库。如果连接字符串未配置您要连接的数据库,则服务器会将您连接到默认数据库。如果您没有为用户配置默认数据库,则默认情况下 master 是默认数据库。**简而言之**:选择默认数据库与SSMS无关,而是与用户在SQL Server中的配置有关 (3认同)

小智 35

在特定数据库Database1中创建数据库用户后,再次选择"master"并创建数据库用户.执行以下语句两次 - 一个用于Database1,另一个用于'master'

CREATE USER appuser1 FROM LOGIN appuser1;
Run Code Online (Sandbox Code Playgroud)

不幸的是,Azure帮助中没有记录这一点 http://msdn.microsoft.com/en-us/library/windowsazure/ee336235.aspx

  • 这违反了[包含用户设计](https://docs.microsoft.com/en-us/sql/relational-databases/security/contained-database-users-making-your-database-portable?view=sql-server -ver15) 将用户仅隔离到他们需要的数据库 (3认同)

fol*_*uis 13

- >打开master数据库的新查询窗口并执行此命令

CREATE LOGIN AppLogin WITH password='XXXXXX'
GO

CREATE USER [AppUser] FOR LOGIN [AppLogin] WITH DEFAULT_SCHEMA=[dbo]
GO
Run Code Online (Sandbox Code Playgroud)

- >为您的数据库打开新的查询窗口

CREATE USER [AppUser] FOR LOGIN [AppLogin] WITH DEFAULT_SCHEMA=[dbo]
GO

EXEC sp_addrolemember 'db_owner', 'AppUser';
GO
Run Code Online (Sandbox Code Playgroud)

来源:如何为Azure SQL数据库创建自定义用户登录


小智 5

正如 Karol 在 Herve Roggero 的回复中评论的那样,即使在选择数据库后我也遇到了同样的问题。

在我们的例子中,问题是我们在数据库中创建的用户被禁用。 被拉黑的用户是我们添加的用户...就像这样

在数据库中运行以下脚本后,我们希望为每个用户建立连接:

  GRANT CONNECT TO [ourDbUser]
Run Code Online (Sandbox Code Playgroud)

我们刷新了数据库的用户,现在它们已启用,然后我们就可以成功连接到数据库了。