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


sp_changeobjectowner (Transact-SQL)

Область применения: SQL Server

Изменяет владельца объекта в текущей базе данных.

Внимание

Эта хранимая процедура работает только с объектами, доступными в SQL Server 2000 (8.x). Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте ALTER SCHEMA или ALTER AUTHORIZATION . sp_changeobjectowner изменяет схему и владельца. Чтобы сохранить совместимость с более ранними версиями SQL Server, эта хранимая процедура будет изменять только владельцев объектов, если текущий владелец и новый владелец имеют то же имя, что и имена пользователей базы данных.

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_changeobjectowner
    [ @objname = ] N'objname'
    , [ @newowner = ] N'newowner'
[ ; ]

Аргументы

[ @objname = ] N'objname'

@objname — nvarchar(776) без значения по умолчанию.

Имя существующей таблицы, представления, определяемой пользователем функции или хранимой процедуры в текущей базе данных. @objname — nvarchar(776) без значения по умолчанию. @objname может быть квалифицирован владельцем существующего объекта в форме<existing_owner>.<object_name>, если схема и его владелец имеют то же имя.

[ @newowner = ] N'newowner'

Имя учетной записи безопасности, которая будет новым владельцем объекта. @newowner — sysname без значения по умолчанию. @newowner должен быть допустимым пользователем базы данных, ролью сервера, пользователем Windows или группой Windows с доступом к текущей базе данных. Если новый владелец является пользователем Windows или группой Windows, для которой нет соответствующего субъекта уровня базы данных, создается пользователь базы данных.

Значения кода возврата

0 (успешно) или 1 (сбой).

Замечания

sp_changeobjectowner Удаляет все существующие разрешения из объекта. Вам придется повторно применять все разрешения, которые вы хотите сохранить после выполнения sp_changeobjectowner. Поэтому перед выполнением sp_changeobjectownerрекомендуется выполнить скрипт для выполнения существующих разрешений. После изменения владельца объекта можно использовать скрипт для повторного применения разрешений. Перед тем как выполнить скрипт разрешений, в нем необходимо изменить владельца объекта.

Чтобы изменить владельца защищаемого объекта, используйте ALTER AUTHORIZATION. Чтобы изменить схему, используйте ALTER SCHEMA.

Разрешения

Требуется членство в предопределенных ролях базы данных db_owner или членство в предопределенных ролях базы данных db_ddladmin и предопределенных ролях базы данных db_securityadmin, а также CONTROL разрешение на объект.

Примеры

В следующем примере владелец authors таблицы Corporate\GeorgeWизменяется на .

EXEC sp_changeobjectowner 'authors', 'Corporate\GeorgeW';
GO