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 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)