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


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. Он не может стать владельцем текущей базы данных, если он уже имеет доступ к базе данных через существующую пользовательскую учетную запись безопасности в базе данных. Чтобы избежать этой ситуации, сначала удалите данного пользователя в текущей базе данных.

  • [ @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'