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

Разрешения

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

Примеры

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

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

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

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

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

EXEC sp_adduser 'Arvind'

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

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

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