ПРОМЯНА НА АВТОРИЗАЦИЯ (Transact-SQL), Microsoft Docs
Променя собственика на защитен обект.
Синтаксис на Transact-SQL
Защитеният клас на обекта, за който собственикът се променя. По подразбиране е класът OBJECT.
entity_name Име на обект.
principal_name Името на принципала, който притежава обекта.
Операторът ALTER AUTHORIZATION може да се използва за промяна на собственика на всеки обект, който има такъв. Собствеността върху обектите, съдържащи се в база данни, може да бъде прехвърлена на всеки принципал в слоя база данни. Собствеността върху обекти на ниво сървър може да бъде прехвърлена само на принципали на ниво сървър.
Започвайки с SQL Server 2005, потребителят може да притежава обект (OBJECT) или тип (TYPE), съдържащ се в схема, която е собственост на друг потребител на база данни. Това поведение е променено от предишните версии на SQL Server. За повече информация вижте OBJECTPROPERTY (Transact-SQL) и TYPEPROPERTY (Transact-SQL).
Можете да прехвърлите собственост върху обектите, съдържащи се в схеми от тип "обект": таблици, изгледи, функции, процедури, опашки и синоними.
Собствеността върху следните обекти, като например свързани сървъри, статистика, ограничения, правила, настройки по подразбиране, тригери, опашки на Service Broker, идентификационни данни, функции за разделяне, схеми за разделяне, главни ключове на база данни, главен ключ на услуга и известия за събития, не може да бъде прехвърлена.
Не можете да прехвърляте собственост върху членове на следните защитени класове: сървър, данни за вход, потребител, роля на приложение и колона.
Аргументът СОБСТВЕНИК НА СХЕМА е валиден само при прехвърляне на собственост върху обект, съдържащ се в схемата. Аргумент СОБСТВЕНИК НА СХЕМАви позволява да прехвърлите собствеността върху обект на собственика на схемата, в която се намира. Схемите съдържат само обекти от класовете OBJECT, TYPE или XML SCHEMA COLLECTION.
Ако целевият обект не е база данни и прехвърленият обект се прехвърля на нов собственик, всички разрешения за целевия обект се премахват.
Схемите се държат различно в SQL Server 2005, отколкото в по-ранните версии на SQL Server. Кодът, който приема, че схемите са еквивалентни на потребителите на бази данни, може да върне неправилни резултати. Старите каталожни изгледи, включително sysobjects, не трябва да се използват в база данни, която някога е изпълнявала някой от следните DDL изрази: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORI ЗАЦИЯ. База данни, която някога е изпълнявала някой от тези изрази, трябва да използва новите каталожни изгледи. Новите каталожни изгледи спазват разделянето принципал/схема, въведено в SQL Server 2005. За повече информация относно каталожните изгледи вижте Каталожни изгледи (Transact-SQL).
Имайте предвид следното:
Единственият надежден начин да намерите собственика на даден обект е да направите заявка в каталожния изгледsys.objects. Единственият надежден начин да намерите собственика на даден тип е да използвате функцията TYPEPROPERTY.
Особени случаи и условия
Не можете да промените собственика на главната, моделната, системната база данни tempdb, базата данни с ресурси или която и да е база данни, използвана като база данни за разпространение. Принципалът трябва да е име за вход. Акопринципал е влизане в Windows без съответстващо влизане в SQL Server, такъв принципал трябва да има разрешение за КОНТРОЛЕН СЪРВЪР, както и разрешение за ПОЕМАНЕ НА СОБСТВЕНОСТ в базата данни. Ако принципалът е влизане в SQL Server, той не може да бъде съпоставен със сертификат или асиметричен ключ. Зависимите псевдоними ще бъдат съпоставени с новия собственик на база данни. DBO SID ще бъде актуализиран както в текущата база данни, така и в sys.databases.
Не можете да промените собственика на тригери, ограничения, правила, настройки по подразбиране, статистики, системни обекти, опашки, индексирани изгледи и таблици с индексирани изгледи.
Когато собствеността се прехвърля, разрешенията за обекти, съдържащи се в схемата, които нямат изрични собственици, се премахват. Собственикът на sys, dbo или information_schema не може да бъде променен.
Не можете да промените собственика на обект TYPE, който принадлежи към схемата sys или information_schema.
ДОГОВОР, ТИП СЪОБЩЕНИЕ или УСЛУГА
Не можете да промените собственика на системните обекти.
Не можете да промените собственика на глобалните временни ключове.
СЕРТИФИКАТ или АСИМЕТРИЧЕН КЛЮЧ
Не можете да прехвърлите собствеността върху тези обекти на роля или група.
Принципалът трябва да е име за вход.
Разрешения
Изисква разрешение TAKE OWNERSHIP върху обекта. Ако новият собственик не е потребителят, изпълняващ този оператор, също се изисква едно от следните: 1) ИМПЕРСОНИРАНЕ на разрешение за новия собственик, ако е потребител или логин; 2) ако новият собственик е роля, членство в роля или разрешение ALTER за тази роля; 3) ако новият собственик е роля на приложение - разрешение ALTERза ролята на приложението.
A. Прехвърляне на собственост върху масата
Следващият пример прехвърля собствеността върху таблицата Sprockets на потребителя MichikoOsada. Тази таблица се намира в схемата Parts.
Заявката може да изглежда и така:
B. Прехвърляне на собствеността върху изгледа на собственика на схемата
Следващият пример прехвърля собствеността върху изгледа ProductionView06 на собственика на схемата, която го съдържа. Този изглед се намира в производствената схема.
C. Прехвърляне на собствеността върху схемата на потребител
Следващият пример прехвърля собствеността върху схемата SeattleProduction11 на потребителя SandraAlayo.
D. Прехвърляне на собственост върху крайна точка за влизане в SQL Server
В следващия пример собствеността върху крайната точка CantabSalesServer1 се прехвърля на JaePak. Тъй като крайната точка е защита на ниво сървър, тя може да бъде предадена само на принципал на ниво сървър.