sp_dropuser (Transact-SQL)
Удаляет пользователя базы данных из текущей базы данных. Хранимая процедура sp_dropuser обеспечивает совместимость с более ранними версиями SQL Server.
Важно! |
---|
В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется. Вместо этого следует использовать инструкцию DROP USER. |
Синтаксис
sp_dropuser [ @name_in_db = ] 'user'
Аргументы
- [ @name_in_db=] 'user'
Имя пользователя, которого необходимо удалить. Аргумент user имеет тип sysname без значения по умолчанию. Пользователь user должен существовать в текущей базе данных. Указывая имя входа Windows, используйте имя, по которому база данных сможет его определить.
Значения кодов возврата
0 (успешное завершение) или 1 (ошибка)
Замечания
Процедура sp_dropuser выполняет процедуру sp_revokedbaccess для удаления пользователя из текущей базы данных.
Используйте процедуру sp_helpuser для отображения списка имен пользователей, которые могут быть удалены из текущей базы данных.
Когда удаляется пользователь базы данных, также удаляются все псевдонимы этого пользователя. Если пользователь является владельцем пустой схемы с тем же именем, что и у пользователя, эта схема будет удалена. Если пользователь владеет любыми другими защищаемыми объектами базы данных, то он не будет удален. Необходимо сначала передать права владения объектами другому участнику. Дополнительные сведения см. в разделе ALTER AUTHORIZATION (Transact-SQL). При удалении пользователя базы данных автоматически удаляются разрешения, связанные с пользователем, а пользователь удаляется из всех ролей базы данных, членом которых он является.
Процедуру sp_dropuser нельзя использовать для удаления владельца базы данных (dbo), пользователей INFORMATION_SCHEMA или пользователя guest из базы данных master или tempdb. В несистемных базах данных инструкция EXEC sp_dropuser 'guest' отменяет разрешение CONNECT для пользователя guest. Однако сам пользователь не будет удален.
Процедуру sp_dropuser нельзя выполнять в рамках пользовательской транзакции.
Разрешения
Необходимо разрешение ALTER ANY USER для базы данных.
Примеры
В следующем примере удаляется пользователь Albert из текущей базы данных.
EXEC sp_dropuser 'Albert';
GO