我正在尝试从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后,会发生此错误:
答案 0 :(得分:1)
这可以在Azure中完成,但是,正如@Larnu所暗示的那样,这并非一帆风顺。他们的答案 中给出的建议仅适用于一次登录,但可能不适用于任何生产场景。我建议执行以下操作:
在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_team
和dev_team2
用户无法访问除[myseconddb]
以外的其他数据库。
然后,您可以在连接字符串中使用,例如用户ID dev_team2
和密码 P@ssW0rd
和初始目录名称myseconddb
(默认)。>
我希望有帮助。
答案 2 :(得分:0)
答案 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'