sp_changeobjectowner (Transact-SQL)
Изменяет владельца объекта в текущей базе данных.
Важно! |
---|
Эта хранимая процедура работает только с объектами, доступными в Microsoft SQL Server 2000. В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется. Взамен используйте ALTER SCHEMA или ALTER AUTHORIZATION. Процедура sp_changeobjectowner изменяет как схему, так и владельца. Для сохранения совместимости с более ранними версиями SQL Server эта хранимая процедура изменит только владельцев объекта, если и текущий владелец, и новый владелец владеют схемами, которые имеют такое же имя, как и имена пользователей базы данных. |
Важно! |
---|
К этой хранимой процедуре было добавлено требование новых разрешений. |
Синтаксис
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