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


sp_changeobjectowner (Transact-SQL)

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

Важное примечаниеВажно!

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

Важное примечаниеВажно!

К этой хранимой процедуре было добавлено требование новых разрешений.

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

Значок ссылки на раздел Cинтаксические обозначения в Transact-SQL

Синтаксис

sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'

Аргументы

  • [ @objname = ] 'object'
    Имя существующей таблицы, представления, определяемой пользователем функции или хранимой процедуры в текущей базе данных. Аргумент object имеет тип nvarchar(776) и не имеет значения по умолчанию. Аргумент object может быть квалифицирован владельцем существующего объекта в форме existing_owner**.**object, если у схемы и ее владельца одно и то же имя.

  • [ @newowner=] **'**owner '
    Имя учетной записи безопасности, которая станет новым владельцем объекта. Аргумент owner имеет тип sysname и не имеет значения по умолчанию. Аргумент owner должен представлять собой действительного пользователя базы данных, серверную роль, имя входа Microsoft 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

См. также

Справочник

ALTER SCHEMA (Transact-SQL)

ALTER DATABASE (Transact-SQL)

ALTER AUTHORIZATION (Transact-SQL)

sp_changedbowner (Transact-SQL)

Системные хранимые процедуры (Transact-SQL)