sp_adduser (Transact-SQL)

Добавляет нового пользователя в текущую базу данных.

Важное примечаниеВажно!

В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо нее используйте инструкцию CREATE USER.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

sp_adduser [ @loginame = ] 'login'  
    [ , [ @name_in_db = ] 'user' ] 
    [ , [ @grpname = ] 'role' ] 

Аргументы

  • [ @loginame = ] 'login'
    Имя входа SQL Server или Windows. Аргумент login имеет тип sysname и не имеет значения по умолчанию. Аргумент login должен представлять собой существующее имя входа SQL Server или имя входа Windows.

  • [ @name_in_db = ] 'user'
    Имя нового пользователя базы данных. Аргумент user имеет тип sysname и значение по умолчанию NULL. Если аргумент user не задан, то по умолчанию именем нового пользователя базы данных по умолчанию является имя login. Аргумент user задает для нового пользователя имя, отличное от имени входа уровня сервера.

  • [ @grpname = ] 'role'
    Роль базы данных, членом которой становится новый пользователь. Аргумент role имеет тип sysname и значение по умолчанию NULL. Аргумент role должен быть допустимой ролью базы данных в текущей базе данных.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

Кроме того, процедура sp_adduser будет создавать схему с именем пользователя.

После добавления пользователя следует определить разрешения, управляющие действиями, которые пользователь может выполнять, с помощью инструкций GRANT, DENY и REVOKE.

Функция sys.server_principals выводит список допустимых имен входа.

Процедура sp_helprole отображает список допустимых имен ролей. При задании роли пользователь автоматически получает соответствующие этой роли разрешения. Если роль не задана, то пользователь получает разрешения, заданные по умолчанию для роли public. Чтобы добавить пользователя в роль, необходимо указать значение параметра user name. (Значения параметров username и login_id могут совпадать.)

Пользователь guest уже существует в любой базе данных. Добавление пользователя guest включит его, если он был ранее отключен. По умолчанию пользователь guest в новых базах данных отключен.

Процедуру sp_adduser нельзя выполнять внутри пользовательской транзакции.

Пользователя guest добавить нельзя, поскольку пользователь guest уже существует в любой базе данных. Чтобы включить пользователя guest, предоставьте пользователю guest разрешение CONNECT следующим образом:

GRANT CONNECT TO guest;
GO

Разрешения

Необходимо, чтобы пользователь был владельцем базы данных.

Примеры

А.Добавление пользователя базы данных

В следующем примере пользователь Vidur добавляется в существующую роль Recruiting текущей базы данных с помощью существующего имени входа SQL Server Vidur.

EXEC sp_adduser 'Vidur', 'Vidur', 'Recruiting'

Б.Добавление пользователя базы данных с таким же идентификатором входа

В приведенном ниже примере пользователь Arvind добавляется в текущую базу данных для имени входа SQL Server Arvind. Этот пользователь принадлежит к роли по умолчанию public.

EXEC sp_adduser 'Arvind'

В.Добавление пользователя базы данных с именем, отличным от имени входа уровня сервера

В приведенном ниже примере в текущую базу данных, в которой есть пользователь с именем Bjorn, добавляется имя входа SQL Server BjornR, а также пользователь Bjorn добавляется в роль Production.

EXEC sp_adduser 'BjornR', 'Bjorn', 'Production'

См. также

Справочник

Хранимые процедуры безопасности (Transact-SQL)

sys.server_principals (Transact-SQL)

sp_addrole (Transact-SQL)

CREATE USER (Transact-SQL)

sp_dropuser (Transact-SQL)

sp_grantdbaccess (Transact-SQL)

sp_grantlogin (Transact-SQL)

Системные хранимые процедуры (Transact-SQL)