sp_adduser (Transact-SQL)

适用范围:SQL Server

向当前数据库中添加新的用户。

重要

在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用 CREATE USER

Transact-SQL 语法约定

语法

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 还会创建一个架构,该架构是用户的名称。

添加用户后,使用GRANTDENYREVOKE语句定义控制用户执行的活动的权限。

用于 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';