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


sp_changedbowner (Transact-SQL)

Изменяет владельца текущей базы данных.

Важное примечаниеВажно!

В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Используйте вместо этого команду ALTER AUTHORIZATION.

Значок ссылки на раздел Синтаксические обозначения Transact-SQL

Синтаксис

sp_changedbowner [ @loginame = ] 'login'
     [ , [ @map = ] remap_alias_flag ]

Аргументы

  • [ @loginame= ] 'login'
    Идентификатор имени входа нового владельца текущей базы данных. Аргумент login имеет тип sysname и не имеет значения по умолчанию. Аргумент login должен быть уже существующим именем входа SQL Server или пользователем Windows. login не может стать владельцем текущей базы данных, если он уже имеет доступ к базе данных через существующую пользовательскую учетную запись безопасности в базе данных. Чтобы избежать этой ситуации, сначала удалите данного пользователя в текущей базе данных.

  • [ @map= ] remap_alias_flag
    Параметр remap_alias_flag является устаревшим, поскольку псевдонимы имени входа были удалены из SQL Server. Использование параметра remap_alias_flag не вызывает ошибку, но не имеет никакого эффекта.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

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

Владельца системных баз данных master, model и tempdb нельзя изменить.

Чтобы отобразить список допустимых значений login, выполните хранимую процедуру sp_helplogins.

Выполнение процедуры sp_changedbowner только с параметром login приводит к изменению владельца базы данных на login.

Можно изменить владельца любого защищаемого объекта с помощью инструкции ALTER AUTHORIZATION. Дополнительные сведения см. в разделе ALTER AUTHORIZATION (Transact-SQL).

Разрешения

Необходимо разрешение TAKE OWNERSHIP для базы данных. Если новый владелец имеет соответствующего пользователя в базе данных, требуется разрешение IMPERSONATE для имени входа, в противном случае необходимо разрешение CONTROL SERVER для сервера.

Примеры

В следующем примере показано, как сделать имя входа Albert владельцем текущей базы данных.

EXEC sp_changedbowner 'Albert'

См. также

Справочник

Хранимые процедуры безопасности (Transact-SQL)

CREATE DATABASE (Transact-SQL)

sp_dropalias (Transact-SQL)

sp_dropuser (Transact-SQL)

sp_helpdb (Transact-SQL)

sp_helplogins (Transact-SQL)

Системные хранимые процедуры (Transact-SQL)