将默认数据库设置为用户SQL Server(Azure)

时间:2019-03-18 22:04:59

标签: c# sql-server azure azure-sql-database

我正在尝试从Azure SQL Server中的C#创建数据库用户。但是我需要设置其默认数据库(DEFAULT_DATABASE),但是该脚本在Azure上不起作用。

有人知道我该怎么做吗?

CREATE USER newlogin FOR LOGIN newlogin;
ALTER LOGIN newlogin WITH DEFAULT_DATABASE = myDatabase;

但是会引发错误:

  

此版本的SQL Server不支持关键字或语句选项'default_database'。

创建用户并尝试连接到SQL Server后,会发生此错误:

enter image description here

4 个答案:

答案 0 :(得分:1)

这可以在Azure中完成,但是,正如@Larnu所暗示的那样,这并非一帆风顺。他们的答案 中给出的建议仅适用于一次登录,但可能不适用于任何生产场景。我建议执行以下操作:

  1. 在Active Directory中创建了一个组,该组封装了您希望应用此行为的用户;将适当的成员分配给该组
  2. 将该组作为新登录名添加到目标Azure Sql Server;更改登录名以将适当的数据库设置为默认数据库
  3. 将该组作为新用户添加到先前分配的默认数据库中


在Azure Sql Server中,此代码与本地代码略有不同:

-- run in [master]
create login [YourGroupName] from external provider;
alter login [YourGroupName] with default_database = [YourDefaultDatabase];

-- run in [YourDefaultDatabase]
create user [YourGroupName] from login [YourGroupName];


编辑:

Azure Sql Server中的用户通常包含在一个数据库中,甚至不存在于“服务器级别”;更多信息,请参见here。如果只想在Azure Sql Server数据库中创建用户,那么您要做的就是编写create user [YourUserName] with password = 'YourSecret';形式的语句。请注意,这假定您已经连接到要在其中创建用户的数据库。如果您处于[master]之类的上下文中,并且无法更改连接字符串,那么您首先需要使用ChangeDatabase

答案 1 :(得分:1)

默认数据库始终是[master]数据库。使用连接字符串数据库/初始目录参数作为默认数据库。要添加特定用户,请使用所有者帐户登录到db服务器主服务器。

然后,您可以在[master]数据库中通过以下方式创建新的用户登录名:

CREATE LOGIN dev_team WITH PASSWORD = 'P@ssW0rd'
GO

然后切换到所需的数据库以进行dev_team登录。创建用户并向该数据库中的用户授予访问权限,例如:

USE [myseconddb]
GO
CREATE USER dev_team FOR LOGIN dev_team
GO
GRANT EXECUTE TO dev_team
GRANT INSERT TO dev_team
GRANT DELETE TO dev_team
GRANT UPDATE TO dev_team
GRANT SELECT TO dev_team
GO

或者只是切换到所需的数据库,

USE [myseconddb]
GO
CREATE USER dev_team2 WITH PASSWORD = 'P@ssW0rd'
GO
EXEC sp_addrolemember N'db_owner', N'dev_team2'
GO
GRANT EXECUTE TO dev_team2
GRANT INSERT TO dev_team2
GRANT DELETE TO dev_team2
GRANT UPDATE TO dev_team2
GRANT SELECT TO dev_team2
GO

然后dev_teamdev_team2用户无法访问除[myseconddb]以外的其他数据库。 然后,您可以在连接字符串中使用,例如用户ID dev_team2密码 P@ssW0rd初始目录名称myseconddb(默认)。

我希望有帮助。

答案 2 :(得分:0)

我发现了一些有用的东西。 如果要使用Management Studio连接到SQL Server,则必须使用“连接属性”并设置默认数据库。

enter image description here

答案 3 :(得分:0)

选择 master 数据库(如果尚未选择)并创建登录名

CREATE LOGIN [myAccountName] WITH PASSWORD = 'myPassword' 
GO

此步骤是授予对主数据库的连接访问权限,并能够登录SSMS 无需更改连接页面中的默认数据库

CREATE USER [myAccountName] FOR LOGIN [myAccountName] WITH DEFAULT_SCHEMA = [dbo]

切换到您的用户数据库并创建用于登录的用户

CREATE USER [myAccountName] FOR LOGIN [myAccountName] WITH DEFAULT_SCHEMA = [dbo]

授予用户所需的权限

EXEC sp_addrolemember N'db_owner', N'myAccountName'