sp_changedbowner (Transact-SQL)
Область применения: SQL Server
Изменяет владельца текущей базы данных.
Внимание
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте ALTER AUTHORIZATION .
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_changedbowner
[ @loginame = ] N'loginame'
[ , [ @map = ] 'map' ]
[ ; ]
Аргументы
[ @loginame = ] N'loginame'
Идентификатор входа нового владельца текущей базы данных. @loginame — sysname без значения по умолчанию. @loginame должен быть уже существующим пользователем SQL Server или пользователем Windows. @loginame не может стать владельцем текущей базы данных, если у нее уже есть доступ к базе данных с помощью существующей учетной записи безопасности пользователя в базе данных. Чтобы избежать этого сценария, сначала удалите пользователя в текущей базе данных.
[ @map = ] 'map'
Этот параметр устарел и поддерживается для обратной совместимости скриптов.
Значения кода возврата
0
(успешно) или 1
(сбой).
Замечания
После sp_changedbowner
выполнения новый владелец называется dbo
пользователем в базе данных. Пользователь dbo
имеет подразумеваемые разрешения на выполнение всех действий в базе данных.
Владелец системных master
model
баз данных не tempdb
может быть изменен.
Чтобы отобразить список допустимых значений @loginame , выполните хранимую процедуру sp_helplogins
.
sp_changedbowner
Выполнение только с параметром @loginame изменяет владение базой данных на @loginame.
Вы можете изменить владельца любого защищаемого объекта с помощью инструкции ALTER AUTHORIZATION
. Дополнительные сведения см. в разделе ALTER AUTHORIZATION.
Разрешения
Необходимо разрешение TAKE OWNERSHIP
на базу данных. Если у нового владельца есть соответствующий пользователь в базе данных, требуется разрешение на вход, в противном случае требуется IMPERSONATE
CONTROL SERVER
разрешение на сервере.
Примеры
В следующем примере показано, как сделать имя входа Albert
владельцем текущей базы данных.
EXEC sp_changedbowner 'Albert';