Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Изменяет владельца защищаемой сущности.
Соглашения о синтаксисе Transact-SQL
Note
Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).
Syntax
-- Syntax for SQL Server
ALTER AUTHORIZATION
ON [ <class_type>:: ] entity_name
TO { principal_name | SCHEMA OWNER }
[;]
<class_type> ::=
{
OBJECT | ASSEMBLY | ASYMMETRIC KEY | AVAILABILITY GROUP | CERTIFICATE
| CONTRACT | TYPE | DATABASE | ENDPOINT | FULLTEXT CATALOG
| FULLTEXT STOPLIST | MESSAGE TYPE | REMOTE SERVICE BINDING
| ROLE | ROUTE | SCHEMA | SEARCH PROPERTY LIST | SERVER ROLE
| SERVICE | SYMMETRIC KEY | XML SCHEMA COLLECTION
}
-- Syntax for SQL Database
ALTER AUTHORIZATION
ON [ <class_type>:: ] entity_name
TO { principal_name | SCHEMA OWNER }
[;]
<class_type> ::=
{
OBJECT | ASSEMBLY | ASYMMETRIC KEY | CERTIFICATE
| TYPE | DATABASE | FULLTEXT CATALOG
| FULLTEXT STOPLIST
| ROLE | SCHEMA | SEARCH PROPERTY LIST
| SYMMETRIC KEY | XML SCHEMA COLLECTION
}
-- Syntax for Azure Synapse Analytics and Microsoft Fabric
ALTER AUTHORIZATION ON
[ <class_type> :: ] <entity_name>
TO { principal_name | SCHEMA OWNER }
[;]
<class_type> ::= {
SCHEMA
| OBJECT
}
<entity_name> ::=
{
schema_name
| [ schema_name. ] object_name
}
-- Syntax for Parallel Data Warehouse
ALTER AUTHORIZATION ON
[ <class_type> :: ] <entity_name>
TO { principal_name | SCHEMA OWNER }
[;]
<class_type> ::= {
DATABASE
| SCHEMA
| OBJECT
}
<entity_name> ::=
{
database_name
| schema_name
| [ schema_name. ] object_name
}
Note
Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
Arguments
<class_type> Защищаемый класс сущности, для которой изменяется владелец. По умолчанию это класс OBJECT.
| Class | Product |
|---|---|
| OBJECT | Область применения: SQL Server 2008 (10.0.x) и более поздних версий, База данных SQL Azure, Azure Synapse Analytics, Analytics Platform System (PDW). |
| ASSEMBLY | Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL Azure. |
| ASYMMETRIC KEY | Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL Azure. |
| AVAILABILITY GROUP | Область применения: SQL Server 2012 и более поздние версии. |
| CERTIFICATE | Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL Azure. |
| CONTRACT | Применимо: SQL Server 2008 (10.0.x) и более поздних версий. |
| DATABASE | Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL Azure. Для получения дополнительной информации смотрите ALTER AUTHORIZATION базы данных. |
| ENDPOINT | Применимо: SQL Server 2008 (10.0.x) и более поздних версий. |
| FULLTEXT CATALOG | Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL Azure. |
| FULLTEXT STOPLIST | Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL Azure. |
| MESSAGE TYPE | Применимо: SQL Server 2008 (10.0.x) и более поздних версий. |
| REMOTE SERVICE BINDING | Применимо: SQL Server 2008 (10.0.x) и более поздних версий. |
| ROLE | Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL Azure. |
| ROUTE | Применимо: SQL Server 2008 (10.0.x) и более поздних версий. |
| SCHEMA | Область применения: SQL Server 2008 (10.0.x) и более поздних версий, База данных SQL Azure, Azure Synapse Analytics, Analytics Platform System (PDW). |
| SEARCH PROPERTY LIST | Область применения: SQL Server 2012 (11.x) и более поздние версии, База данных SQL Azure. |
| SERVER ROLE | Применимо: SQL Server 2008 (10.0.x) и более поздних версий. |
| SERVICE | Применимо: SQL Server 2008 (10.0.x) и более поздних версий. |
| SYMMETRIC KEY | Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL Azure. |
| TYPE | Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL Azure. |
| XML SCHEMA COLLECTION | Область применения: SQL Server 2008 (10.0.x) и более поздних версий База данных SQL Azure. |
entity_name — имя сущности.
principal_name | SCHEMA ВЛАДЕЛЕЦ: Имя принципала по ценным бумагам, который будет владеть этим предприятием. Объекты базы данных должны принадлежать субъекту базы данных; пользователю базы данных или роли. Объекты сервера (такие как базы данных) должны принадлежать субъекту сервера (имя для входа). Укажите SCHEMA OWNER в качестве *principal_name- чтобы указать, что объект должен принадлежать принципалу, владеющему схемой объекта.
Remarks
ALTER AUTHORIZATION может использоваться для изменения права собственности на любую организацию, имеющую собственника. Владение содержащимися в базе данных сущностями можно передать любому участнику уровня базы данных. Владение сущностями уровня сервера можно передать только участникам уровня сервера.
Important
Начиная с SQL Server 2005 (9.x), пользователь может владеть объектом или TYPE объектом, содержащимся схемой, принадлежащей другому пользователю базы данных. Это изменение поведения с более ранних версий SQL Server. Дополнительные сведения см. в разделах OBJECTPROPERTY (Transact-SQL) и TYPEPROPERTY (Transact-SQL).
Владение можно передавать для следующих, содержащихся в схемах сущностей типа «объект»: таблиц, представлений, функций, процедур, очередей и синонимов.
Невозможно передать владение следующими сущностями: связанные серверы, статистика, ограничения, правила, значения по умолчанию, триггеры, очереди Service Broker, учетные данные, функции секционирования, схемы секционирования, основные ключи базы данных, главный ключ службы и уведомления о событиях.
Нельзя передавать владение элементами следующих защищаемых классов: сервером, именем входа, пользователем, ролью приложения и столбцом.
Опция SCHEMA ВЛАДЕЛЕЦ действует только при передаче права собственности на структуру, содержащую схему. SCHEMA ВЛАДЕЛЕЦ передает право собственности на организацию владельцу схемы, в которой она находится. Только сущности класса OBJECT TYPE, или XML SCHEMA COLLECTION содержатся в схеме.
Если целевая сущность не представляет собой базу данных, а передаваемая сущность передается новому владельцу, все разрешения на целевую сущность удаляются.
Note
Схемы не эквивалентны пользователям базы данных. Используйте представления системного каталога для выявления различий между пользователями базы данных и схемами.
Имейте в виду следующее:
Important
Единственный надежный способ найти владельца объекта — запросить представление каталога sys.objects. Единственный надежный способ найти владельца типа — использовать функцию TYPEPROPERTY.
Особые случаи и условия
В следующей таблице перечислены особые случаи, исключения и условия, касающиеся изменения авторизации.
| Class | Condition |
|---|---|
| OBJECT | Нельзя изменить владельца триггеров, ограничений, правил, значений по умолчанию, статистик, системных объектов, очередей, индексированных представлений и таблиц с индексированными представлениями. |
| SCHEMA | При передаче владения разрешения на содержащиеся в схеме объекты, у которых нет явных владельцев, удаляются. Нельзя изменить владельца схем sys, dbo и information_schema. |
| TYPE | Нельзя изменить владельца на TYPE систему, которая принадлежит системе или information_schema. |
| CONTRACT, MESSAGE TYPE или SERVICE | Нельзя изменить владельца системных сущностей. |
| SYMMETRIC KEY | Нельзя изменить владельца глобальных временных ключей. |
| CERTIFICATE или ASYMMETRIC KEY | Нельзя передавать владение данными сущностями роли или группе. |
| ENDPOINT | Участник должен представлять собой имя входа в систему. |
ALTER AUTHORIZATION для баз данных
Для SQL Server
Требования к новому владельцу: новый субъект-владелец должен быть одним из следующих:
- имя входа для проверки подлинности SQL Server;
- имя входа для проверки подлинности Windows, представляющее пользователя Windows (а не группу);
- пользователь Windows, проходящий проверку подлинности с использованием имени входа для проверки подлинности Windows, представляющего группу Windows.
Требования к лицу, выполняющему эту ALTER AUTHORIZATION заявку: Если вы не являетесь членом роли системного администратора фиксированного сервера, вы должны иметь как минимум ПРАВО ВЛАДЕНИЯ на базу данных и иметь право на имперентирование при входе нового владельца.
Для Базы данных SQL Azure
Требования к новому владельцу: новый субъект-владелец должен быть одним из следующих:
- имя входа для проверки подлинности SQL Server;
- Федеративный пользователь (а не группа) присутствует в идентификаторе Microsoft Entra.
- Управляемый пользователь (а не группа) или приложение, присутствующих в идентификаторе Microsoft Entra.
Если новый владелец является пользователем Microsoft Entra, он не может существовать как пользователь в базе данных, где новый владелец станет новым владельцем базы данных (dbo). Пользователь Microsoft Entra должен сначала быть удалён из базы данных перед выполнением ALTER AUTHORIZATION инструкции о передаче владельца базы данных новому пользователю. Дополнительные сведения о настройке пользователей Microsoft Entra с База данных SQL см. в разделе "Настройка проверки подлинности Microsoft Entra".
Требования к человеку, выполняющему эту ALTER AUTHORIZATION заявку: Вы должны подключиться к целевой базе данных, чтобы изменить владельца этой базы.
Изменить владельца базы данных могут следующие типы учетных записей.
- Имя входа субъекта уровня обслуживания, которое является администратором SQL, подготовленным при создании логического сервера в Azure .
- Администратор Microsoft Entra для логического сервера..
- Текущий владелец базы данных.
Следующая таблица содержит сводку требований.
| Executor | Target | Result |
|---|---|---|
| Имя входа для проверки подлинности SQL Server | Имя входа для проверки подлинности SQL Server | Success |
| Имя входа для проверки подлинности SQL Server | Пользователь Microsoft Entra | Fail |
| Пользователь Microsoft Entra | Имя входа для проверки подлинности SQL Server | Success |
| Пользователь Microsoft Entra | Пользователь Microsoft Entra | Success |
Чтобы проверить владельца базы данных Microsoft Entra, выполните следующую команду Transact-SQL в пользовательской базе данных (в этом примере testdb).
SELECT CAST(owner_sid as uniqueidentifier) AS Owner_SID
FROM sys.databases
WHERE name = 'testdb';
Выходные данные будут GUID (например, XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXXXXX), который соответствует идентификатору объекта пользователя Microsoft Entra или субъекта-службы, назначенного владельцем базы данных. Это можно проверить, проверив идентификатор объекта пользователя в идентификаторе Microsoft Entra ID. Если владельцем базы данных SQL Server является пользователь имени входа, выполните следующую инструкцию в базе данных master для проверки владельца базы данных:
SELECT d.name, d.owner_sid, sl.name
FROM sys.databases AS d
JOIN sys.sql_logins AS sl
ON d.owner_sid = sl.sid;
Лучшие практики
Вместо использования пользователей Microsoft Entra в качестве отдельных владельцев базы данных используйте группу Microsoft Entra в качестве члена предопределенной роли базы данных db_owner . Ниже показано, как настроить отключенное имя входа в качестве владельца базы данных и сделать группу Microsoft Entra (mydbogroup) членом роли db_owner .
Войдите в SQL Server от имени администратора Microsoft Entra и измените владельца базы данных на отключенное имя входа проверки подлинности SQL Server. Например, в базе данных пользователя выполните следующую команду:
ALTER AUTHORIZATION ON database::testdb TO DisabledLogin;Создайте группу Microsoft Entra, которая должна принадлежать базе данных и добавить ее в базу данных пользователя. Рассмотрим пример.
CREATE USER [mydbogroup] FROM EXTERNAL PROVIDER;В пользовательской базе данных добавьте пользователя, представляющего группу Microsoft Entra, в роль db_owner предопределенных баз данных. Рассмотрим пример.
ALTER ROLE db_owner ADD MEMBER mydbogroup;
Теперь члены mydbogroup могут централизованно управлять базой данных как члены роли db_owner.
- Когда члены этой группы удаляются из группы Microsoft Entra, они автоматически теряют разрешения dbo для этой базы данных.
- Аналогично, если новые члены добавляются в
mydbogroupгруппу Microsoft Entra, они автоматически получают доступ к dbo для этой базы данных.
Чтобы проверить наличие действующего разрешения dbo у конкретного пользователя, пользователь должен выполнить следующую инструкцию:
SELECT IS_MEMBER ('db_owner');
Возвращаемое значение 1 указывает, что пользователь является членом роли.
Permissions
Требует разрешения TAKE OWNERSHIP для сущности. Если новый владелец не является пользователем, выполняющим данную инструкцию, также требуется одно из следующих условий: 1) разрешение IMPERSONATE для нового владельца, если это пользователь или имя входа; 2) если новый владелец представляет собой роль — членство в роли или разрешение ALTER для этой роли; 3) если новый владелец представляет собой роль приложения — разрешение ALTER для роли приложения.
Examples
A. Передача владения таблицей
В следующем примере владение таблицей Sprockets передается пользователю MichikoOsada. Эта таблица расположена в схеме Parts.
ALTER AUTHORIZATION ON OBJECT::Parts.Sprockets TO MichikoOsada;
GO
Запрос также может выглядеть следующим образом:
ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO
Если схема объектов не включена в инструкцию, ядро СУБД будет искать объект в схеме по умолчанию для пользователей. Рассмотрим пример.
ALTER AUTHORIZATION ON Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON OBJECT::Sprockets TO MichikoOsada;
B. Передача владения представлением владельцу схемы
В следующем примере передается владение представлением ProductionView06 владельцу содержащей его схемы. Это представление расположено в схеме Production.
ALTER AUTHORIZATION ON OBJECT::Production.ProductionView06 TO SCHEMA OWNER;
GO
C. Передача владения схемой пользователю
В следующем примере владение схемой SeattleProduction11 передается пользователю SandraAlayo.
ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO
D. Передача владения конечной точкой имени входа в SQL Server
В следующем примере владение конечной точкой CantabSalesServer1 передается JaePak. Так как конечная точка представляет собой защищаемую сущность уровня сервера, ее можно передать только участнику уровня сервера.
Применимо: SQL Server 2008 (10.0.x) и более поздних версий.
ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO
E. Изменение владельца таблицы
В каждом из следующих примеров показано изменение владельца таблицы Sprockets в базе данных Parts на пользователя базы данных MichikoOsada.
ALTER AUTHORIZATION ON Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON dbo.Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON OBJECT::Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON OBJECT::dbo.Sprockets TO MichikoOsada;
F. Изменение владельца базы данных
Применимо к: SQL Server 2008 (10.0.x) и более поздних версий, База данных SQL.
В следующем примере показано, как изменить владельца базы данных Parts на имя входа MichikoOsada.
ALTER AUTHORIZATION ON DATABASE::Parts TO MichikoOsada;
G. Изменение владельца базы данных на пользователя Microsoft Entra
В следующем примере администратор Microsoft Entra для SQL Server в организации с пользовательским доменом cqclinic.onmicrosoft.comMicrosoft Entra может изменить текущее владение базой данных и сделать существующего пользователя targetDB Microsoft Entra новым владельцем базы данных richel@cqclinic.onmicorsoft.com с помощью следующей команды:
ALTER AUTHORIZATION ON database::targetDB TO [rachel@cqclinic.onmicrosoft.com];
См. также
OBJECTPROPERTY (Transact-SQL)TYPEPROPERTY (Transact-SQL)EVENTDATA (Transact-SQL)