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


sp_changeobjectowner (Transact-SQL)

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

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

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

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

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

Значок ссылки на разделСинтаксические обозначения в 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