我正在尝试使用以下模板:
-- =================================================
-- 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'。我连接了我的默认数据库'authentication',我打开了一个查询窗口。
但模板对我来说没有意义。例如什么是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','附近的语法不正确。
和
CREATE USER user1
FOR LOGIN user1
WITH DEFAULT_SCHEMA = dbo
GO
,并提供:
Msg 15007,Level 16,State 1,Line 1'user1'i
不是有效的登录信息,或者您没有权限。
答案 0 :(得分:87)
修改 - 包含用户(v12及更高版本)
从Sql Azure 12开始,数据库将创建为Contained Databases,这将允许用户直接在数据库中创建,而无需通过主服务器登录服务器。
CREATE USER [MyUser] WITH PASSWORD = 'Secret';
ALTER ROLE [db_datareader] ADD MEMBER [MyUser];
注意在使用包含用户时连接到数据库时,必须始终在连接字符串中指定数据库。
传统服务器登录 - 数据库用户(第12版)
为了添加@ Igorek的答案,您可以在Sql Server Management Studio中执行以下操作:
在服务器上创建新登录
在master
中(通过SSMS中的Available databases
下拉列表 - 这是因为USE master
在Azure中不起作用):
创建登录信息:
CREATE LOGIN username WITH password='password';
在数据库中创建新用户
切换到实际数据库(再次通过可用的数据库下拉列表或新连接)
CREATE USER username FROM LOGIN username;
(我假设您希望用户和登录绑定为username
,但如果不是这样,则更改。)
现在将用户添加到相关的安全角色
EXEC sp_addrolemember N'db_owner', N'username'
GO
(显然,应用用户的权限应低于dbo
。)
答案 1 :(得分:25)
查看此链接以获取所有信息:https://azure.microsoft.com/en-us/blog/adding-users-to-your-sql-azure-database/
首先,您需要为SQL Azure创建一个登录名,其语法如下:
CREATE LOGIN username WITH password='password';
此命令需要在master db中运行。之后才能运行命令在数据库中创建用户。 SQL Azure或SQL Server的工作方式是首先在服务器级创建一个登录,然后将其映射到每个数据库中的用户。
HTH
答案 2 :(得分:19)
我在这里听到了答案,但当我尝试与新用户建立联系时,收到一条错误消息,指出"The server principal 'newuser' is not able to access the database 'master' under the current security context"
。
我还必须在主表中创建一个新用户才能使用SSMS成功登录。
USE [master]
GO
CREATE LOGIN [newuser] WITH PASSWORD=N'blahpw'
GO
CREATE USER [newuser] FOR LOGIN [newuser] WITH DEFAULT_SCHEMA=[dbo]
GO
USE [MyDatabase]
CREATE USER newuser FOR LOGIN newuser WITH DEFAULT_SCHEMA = dbo
GO
EXEC sp_addrolemember N'db_owner', N'newuser'
GO
答案 3 :(得分:10)
我使用CodePlex的Azure Management console tool,使用非常有用的GUI,试一试。您可以保存类型代码。
答案 4 :(得分:7)
您只需在SQL DB V12中创建一个包含的用户即可。
Create user containeduser with password = 'Password'
使用master创建的登录,包含用户登录比登录数据库更有效。您可以在http://www.sqlindepth.com/contained-users-in-sql-azure-db-v12/
找到更多详情答案 5 :(得分:1)
创建用户,然后将用户添加到特定角色:
CREATE USER [test] WITH PASSWORD=N'<strong password>'
go
ALTER ROLE [db_datareader] ADD MEMBER [test]
go
答案 6 :(得分:1)
1连接到主数据库时创建登录名 (在您的数据库客户端中,打开与主数据库的连接)
CREATE LOGIN 'testUserLogin' WITH password='1231!#ASDF!a';
2在连接数据库时创建用户(在数据库客户端中,打开与数据库的连接)
CREATE USER testUserLoginFROM LOGIN testUserLogin;
请注意,用户名与登录名相同。当我使用其他用户名和登录名时,它对我不起作用。
3添加所需的权限
EXEC sp_addrolemember db_datawriter, 'testUser';
您可能还需要添加“ db_datareader”。
角色列表:
我受到@nthpixel answer的启发,但不适用于我的数据库客户端DBeaver。
它不允许我运行USE [master]
和use [my-db]
语句。
https://azure.microsoft.com/en-us/blog/adding-users-to-your-sql-azure-database/
在主数据库连接中运行查询行。
SELECT A.name as userName, B.name as login, B.Type_desc, default_database_name, B.*
FROM sys.sysusers A
FULL OUTER JOIN sys.sql_logins B
ON A.sid = B.sid
WHERE islogin = 1 and A.sid is not null
答案 7 :(得分:0)
我认为模板使用以下表示法:变量名,变量类型,默认值。
Sysname是一种内置数据类型,可以保存系统对象的名称。
它限制为128个Unicode字符。
-- same as sysname type
declare @my_sysname nvarchar(128);
答案 8 :(得分:0)
我发现此链接非常有用:
https://azure.microsoft.com/en-gb/documentation/articles/sql-database-manage-logins/
详细说明如下:
- Azure SQL数据库订户帐户
- 使用Azure Active Directory用户访问数据库
- 服务器级主要帐户(不受限制的访问)
- 将用户添加到dbmanager
数据库角色
我用这个和斯图尔特的答案做了以下事情:
在master
数据库上(请参阅关于谁拥有此权限的链接):
CREATE LOGIN [MyAdmin] with password='ReallySecurePassword'
然后在有问题的数据库上:
CREATE USER [MyAdmin] FROM LOGIN [MyAdmin]
ALTER ROLE db_owner ADD MEMBER [MyAdmin]
您还可以根据以下链接创建此类用户:
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;