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)