我正在尝试使用以下模板:
-- =================================================
-- Create User as DBO template for SQL Azure Database
-- =================================================
-- For login <login_name, sysname, login_name>, create a user in the database
CREATE USER <user_name, sysname, user_name>
FOR LOGIN <login_name, sysname, login_name>
WITH DEFAULT_SCHEMA = <default_schema, sysname, dbo>
GO
-- Add user to the database owner role
EXEC sp_addrolemember N'db_owner', N'<user_name, sysname, user_name>'
GO
我想创建一个名为 user1 的用户,密码为“user1pass”。我使用默认数据库“身份验证”进行连接,并且打开了一个查询窗口。
但是这个模板对我来说没有意义。例如,sysname 是什么,在哪里提供密码以及应该使用什么作为 default_schema?
特定用户需要拥有执行所有操作的权力。但是我该如何设置才能让他可以做所有事情,如果我让用户成为数据库所有者就可以做到这一点吗?
到目前为止我已经尝试过:
CREATE USER user1, sysname, user1
FOR LOGIN user1, sysname, user1
WITH DEFAULT_SCHEMA = dbo, sysname, dbo
GO
给予:
Msg 102, Level 15, State 1, Line 1 Incorrect syntax near ','.
和:
CREATE USER user1
FOR LOGIN user1
WITH DEFAULT_SCHEMA = dbo
GO
给予:
Msg 15007, Level 16, State 1, Line 1 'user1' i
不是有效的登录名或您没有权限。
最佳答案
编辑 - 包含的用户(v12 及更高版本)
从 Sql Azure 12 开始,数据库将创建为 Contained Databases这将允许直接在数据库中创建用户,而不需要通过主服务器登录。
Sql(标准)用户
CREATE USER [MyUser] WITH PASSWORD = 'Secret';
ALTER ROLE [db_datareader] ADD MEMBER [MyUser]; -- or sp_addrolemember
CREATE USER [<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="db88b4b6be8ea8bea99bb6a2bfb4b6bab2b5f5b8b4b6" rel="noreferrer noopener nofollow">[email protected]</a>] FROM EXTERNAL PROVIDER;
EXEC sp_addrolemember 'db_datareader' , N'<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="71221e1c1424021403311c08151e1c10181f5f121e1c" rel="noreferrer noopener nofollow">[email protected]</a>'
AAD 关联群组
CREATE USER [SomeGroup] FROM EXTERNAL PROVIDER;
EXEC sp_addrolemember 'db_datareader' , N'SomeGroup'
注意!当使用包含的用户连接到数据库时,您必须始终在连接字符串中指定数据库。
传统服务器登录 - 数据库用户(12 版之前)
为了添加@Igorek的答案,您可以在Sql Server Management Studio中执行以下操作:
在服务器上创建新的登录名
在 master
中(通过 SSMS 中的可用数据库
下拉菜单 - 这是因为 USE master
在 Azure 中不起作用):
创建登录名:
CREATE LOGIN username WITH password=N'password';
在数据库中创建新用户
切换到实际数据库(再次通过可用数据库下拉列表或新连接)
CREATE USER username FROM LOGIN username;
(我假设您希望用户和登录名绑定(bind)为用户名
,但如果情况并非如此,请进行更改。)
现在将用户添加到相关的安全角色
EXEC sp_addrolemember N'db_owner', N'username'
GO
(显然,应用程序用户的权限应低于 dbo
。)
关于sql-server - 如何在 SQL Azure 数据库中创建新用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19094970/