Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения: 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 владельцем текущей базы данных.
EXECUTE sp_changedbowner 'Albert';