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
также создает схему, имя пользователя.
После добавления пользователя используйте GRANT
DENY
инструкции и REVOKE
инструкции для определения разрешений, которые управляют действиями, выполняемыми пользователем.
Используется sys.server_principals
для отображения списка допустимых имен входа.
Используется sp_helprole
для отображения списка допустимых имен ролей. При задании роли пользователь автоматически получает соответствующие этой роли разрешения. Если роль не указана, пользователь получает разрешения, предоставленные общедоступной роли по умолчанию. Чтобы добавить пользователя в роль, необходимо указать значение для @name_in_db . (@name_in_db может совпадать с @loginame.)
Гостевой пользователь уже существует в каждой базе данных. Добавление гостевого пользователя позволяет этому пользователю, если он был отключен ранее. По умолчанию гостевой пользователь отключен в новых базах данных.
sp_adduser
невозможно выполнить внутри определяемой пользователем транзакции.
Нельзя добавить гостевого пользователя, так как гостевой пользователь уже существует в каждой базе данных. Чтобы включить гостевого пользователя, предоставьте гостевой connect разрешение, как показано ниже.
GRANT CONNECT TO guest;
GO
Разрешения
Необходимо, чтобы пользователь был владельцем базы данных.
Примеры
А. Добавление пользователя базы данных
В следующем примере пользователь Vidur
базы данных добавляется в существующую Recruiting
роль в текущей базе данных с использованием существующего имени входа Vidur
SQL Server.
EXEC sp_adduser 'Vidur', 'Vidur', 'Recruiting';
B. Добавление пользователя базы данных с тем же идентификатором входа
В следующем примере добавляется пользователь Arvind
в текущую базу данных для входа Arvind
SQL Server. Этот пользователь принадлежит общедоступной роли по умолчанию.
EXEC sp_adduser 'Arvind';
C. Добавление пользователя базы данных с именем, отличным от имени входа на уровне сервера
В следующем примере добавляется имя входа BjornR
SQL Server в текущую базу данных, которая является именем Bjorn
пользователя, и добавляет пользователя Bjorn
базы данных в Production
роль базы данных.
EXEC sp_adduser 'BjornR', 'Bjorn', 'Production';