sp_changedbowner (Transact-SQL)
Изменяет владельца текущей базы данных.
Примечание |
---|
В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется. Используйте вместо этого команду ALTER AUTHORIZATION. |
Синтаксис
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'