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


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 имеет подразумеваемые разрешения на выполнение всех действий в базе данных.

Владелец системных mastermodelбаз данных не tempdb может быть изменен.

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

sp_changedbowner Выполнение только с параметром @loginame изменяет владение базой данных на @loginame.

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

Разрешения

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

Примеры

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

EXEC sp_changedbowner 'Albert';