Поделиться через


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 также создает схему, имя пользователя.

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

Используется sys.server_principals для отображения списка допустимых имен входа.

Используется sp_helprole для отображения списка допустимых имен ролей. При задании роли пользователь автоматически получает соответствующие этой роли разрешения. Если роль не указана, пользователь получает разрешения, предоставленные общедоступной роли по умолчанию. Чтобы добавить пользователя в роль, необходимо указать значение для @name_in_db . (@name_in_db может совпадать с @loginame.)

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

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

Нельзя добавить гостевого пользователя, так как гостевой пользователь уже существует в каждой базе данных. Чтобы включить гостевого пользователя, предоставьте гостевой connect разрешение, как показано ниже.

GRANT CONNECT TO guest;
GO

Разрешения

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

Примеры

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

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

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

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

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

EXEC sp_adduser 'Arvind';

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

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

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