sp_adduser (Transact-SQL)
适用范围:SQL Server
向当前数据库中添加新的用户。
重要
在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用 CREATE USER 。
语法
sp_adduser
[ @loginame = ] N'loginame'
[ , [ @name_in_db = ] N'name_in_db' ]
[ , [ @grpname = ] N'grpname' ]
[ ; ]
参数
[ @loginame = ] N'loginame'
SQL Server 登录名或 Windows 帐户的名称。 @loginame为 sysname,无默认值。 @loginame必须是现有的 SQL Server 登录名或 Windows 帐户。
[ @name_in_db = ] N'name_in_db'
新数据库用户的名称。 @name_in_db为 sysname,默认值为 NULL
. 如果未 指定@name_in_db ,则新数据库用户的名称默认为 @loginame。 指定 @name_in_db 为新用户提供与服务器级登录名不同的数据库中的名称。
[ @grpname = ] N'grpname'
新用户成为其成员的数据库角色。 @grpname为 sysname,默认值为 NULL
. @grpname必须是当前数据库中的有效数据库角色。
返回代码值
0
(成功)或 1
(失败)。
注解
sp_adduser
还会创建一个架构,该架构是用户的名称。
添加用户后,使用GRANT
和DENY
REVOKE
语句定义控制用户执行的活动的权限。
用于 sys.server_principals
显示有效登录名的列表。
用于 sp_helprole
显示有效角色名称的列表。 当指定一个角色时,用户会自动地获得那些为该角色定义的权限。 如果未指定角色,则用户获得授予默认 公共 角色的权限。 若要将用户添加到角色,必须提供@name_in_db的值。 (@name_in_db 可以与 @loginame相同。
用户 来宾 已存在于每个数据库中。 添加用户 来宾 会启用此用户(如果以前已禁用)。 默认情况下,新数据库中禁用用户 来宾 。
sp_adduser
不能在用户定义的事务内执行。
无法添加 来宾 用户,因为 每个数据库中已存在来宾 用户。 若要启用 来宾 用户,请授予 来宾 CONNECT 权限,如下所示:
GRANT CONNECT TO guest;
GO
权限
要求具有数据库的所有权。
示例
A. 添加数据库用户
以下示例使用现有的 SQL Server 登录名Vidur
将数据库用户Vidur
添加到当前数据库中的现有Recruiting
角色。
EXEC sp_adduser 'Vidur', 'Vidur', 'Recruiting';
B. 添加具有相同登录 ID 的数据库用户
以下示例将用户 Arvind
添加到 SQL Server 登录 Arvind
名的当前数据库。 此用户属于默认 公共 角色。
EXEC sp_adduser 'Arvind';
°C 添加与服务器级登录名不同的数据库用户
以下示例将 SQL Server 登录 BjornR
名添加到当前数据库的用户名 Bjorn
,并将数据库用户 Bjorn
添加到 Production
数据库角色。
EXEC sp_adduser 'BjornR', 'Bjorn', 'Production';