ALTER AUTHORIZATION (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Změní vlastnictví zabezpečitelného objektu.

Transact-SQL konvence syntaxe

Note

Microsoft Entra ID se dříve označovala jako 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

Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.

Arguments

< > class_type Je zabezpečitelná třída entity, pro kterou se mění vlastník. OBJECT je výchozí hodnota.

Class Product
OBJECT Platí pro: SQL Server 2008 (10.0.x) a novější, Azure SQL Database, Azure Synapse Analytics, Platform Platform System (PDW).
ASSEMBLY Platí pro: SQL Server 2008 (10.0.x) a novější, Azure SQL Database.
ASYMMETRIC KEY Platí pro: SQL Server 2008 (10.0.x) a novější, Azure SQL Database.
AVAILABILITY GROUP Platí pro: SQL Server 2012 a novější
CERTIFICATE Platí pro: SQL Server 2008 (10.0.x) a novější, Azure SQL Database.
CONTRACT Platí pro: SQL Server 2008 (10.0.x) a novější
DATABASE Platí pro: SQL Server 2008 (10.0.x) a novější, Azure SQL Database. Pro více informací viz ALTER AUTHORIZATION databáze.
ENDPOINT Platí pro: SQL Server 2008 (10.0.x) a novější
FULLTEXT CATALOG Platí pro: SQL Server 2008 (10.0.x) a novější, Azure SQL Database.
FULLTEXT STOPLIST Platí pro: SQL Server 2008 (10.0.x) a novější, Azure SQL Database.
MESSAGE TYPE Platí pro: SQL Server 2008 (10.0.x) a novější
REMOTE SERVICE BINDING Platí pro: SQL Server 2008 (10.0.x) a novější
ROLE Platí pro: SQL Server 2008 (10.0.x) a novější, Azure SQL Database.
ROUTE Platí pro: SQL Server 2008 (10.0.x) a novější
SCHEMA Platí pro: SQL Server 2008 (10.0.x) a novější, Azure SQL Database, Azure Synapse Analytics, Platform Platform System (PDW).
SEARCH PROPERTY LIST Platí pro: SQL Server 2012 (11.x) a novější, Azure SQL Database.
SERVER ROLE Platí pro: SQL Server 2008 (10.0.x) a novější
SERVICE Platí pro: SQL Server 2008 (10.0.x) a novější
SYMMETRIC KEY Platí pro: SQL Server 2008 (10.0.x) a novější, Azure SQL Database.
TYPE Platí pro: SQL Server 2008 (10.0.x) a novější, Azure SQL Database.
XML SCHEMA COLLECTION Platí pro: SQL Server 2008 (10.0.x) a novější, Azure SQL Database.

entity_name Je název entity.

principal_name | SCHEMA VLASTNÍK Jméno principa cenného papíru, který bude vlastníkem subjektu. Databázové objekty musí vlastnit instanční objekt databáze; databázový uživatel nebo role. Objekty serveru (například databáze) musí vlastnit instanční objekt (přihlášení). Specifikujte SCHEMA OWNER jako *principal_name-, aby bylo jasné, že objekt by měl vlastnit principal, který vlastní schéma objektu.

Remarks

ALTER AUTHORIZATION lze použít ke změně vlastnictví jakéhokoliv subjektu, který má vlastníka. Vlastnictví entit obsažených v databázi lze přenést do jakéhokoli objektu zabezpečení na úrovni databáze. Vlastnictví entit na úrovni serveru lze přenést pouze na objekty zabezpečení na úrovni serveru.

Important

Od SQL Server 2005 (9.x) může uživatel vlastnit OBJEKT nebo TYPE ten, který je obsažen ve schématu vlastněném jiným uživatelem databáze. Jedná se o změnu chování ze starších verzí SQL Serveru. Další informace naleznete v tématu OBJECTPROPERTY (Transact-SQL) a TYPEPROPERTY (Transact-SQL).

Vlastnictví následujících entit obsažených ve schématu typu "object" lze přenést: tabulky, zobrazení, funkce, procedury, fronty a synonyma.

Vlastnictví následujících entit nelze přenést: propojené servery, statistiky, omezení, pravidla, výchozí hodnoty, triggery, fronty služby Service Broker, přihlašovací údaje, funkce oddílů, schémata oddílů, hlavní klíče databáze, hlavní klíč služby a oznámení událostí.

Vlastnictví členů následujících zabezpečitelných tříd nelze přenést: server, přihlášení, uživatel, role aplikace a sloupec.

Volba SCHEMA VLASTNÍK je platná pouze tehdy, když převádíte vlastnictví entity obsahující schémata. SCHEMA VLASTNÍK převede vlastnictví subjektu na vlastníka schématu, ve kterém se nachází. Pouze entity třídy OBJECT, TYPE, nebo XML SCHEMA COLLECTION jsou obsaženy ve schématu.

Pokud cílová entita není databáze a entita se převádí na nového vlastníka, všechna oprávnění k cíli se zahodí.

Note

Schémata nejsou ekvivalentní uživatelům databáze. Pomocí zobrazení katalogu systému identifikujte všechny rozdíly mezi uživateli databáze a schématy.

Všimněte si také těchto věcí:

Important

Jediným spolehlivým způsobem, jak najít vlastníka objektu, je dotazování zobrazení katalogu sys.objects . Jediným spolehlivým způsobem, jak najít vlastníka typu, je použít funkci TYPEPROPERTY.

Zvláštní případy a podmínky

Následující tabulka uvádí zvláštní případy, výjimky a podmínky, které platí pro změnu autorizace.

Class Condition
OBJECT Nelze změnit vlastnictví triggerů, omezení, pravidel, výchozích hodnot, statistik, systémových objektů, front, indexovaných zobrazení nebo tabulek s indexovanými zobrazeními.
SCHEMA Při převodu vlastnictví se oprávnění k objektům obsaženým ve schématu, které nemají explicitní vlastníky, zahodí. Nelze změnit vlastníka systému, dbo nebo information_schema.
TYPE Nelze změnit vlastnictví toho TYPE , co patří sys nebo information_schema.
CONTRACT, MESSAGE TYPE nebo SERVICE Nelze změnit vlastnictví systémových entit.
SYMMETRIC KEY Nelze změnit vlastnictví globálních dočasných klíčů.
CERTIFICATE nebo ASYMMETRIC KEY Vlastnictví těchto entit nelze přenést do role nebo skupiny.
ENDPOINT Objekt zabezpečení musí být přihlášení.

ALTER AUTHORIZATION pro databáze

Pro SQL Server

Požadavky pro nového vlastníka: Nový objekt zabezpečení vlastníka musí být jeden z následujících:

  • Přihlášení k ověřování SQL Serveru.
  • Přihlášení k ověřování systému Windows představujícího uživatele Systému Windows (nikoli skupinu).
  • Uživatel Systému Windows, který se ověřuje prostřednictvím přihlášení ověřování systému Windows představující skupinu Windows.

Požadavky na osobu, která příkaz vykonává: ALTER AUTHORIZATION Pokud nejste členem role pevného správce systému, musíte mít alespoň oprávnění PŘEVZÍT VLASTNICTVÍ databáze a musíte mít povolení IMPERSONATE při přihlášení nového vlastníka.

Pro Azure SQL Database

Požadavky pro nového vlastníka: Nový objekt zabezpečení vlastníka musí být jeden z následujících:

  • Přihlášení k ověřování SQL Serveru.
  • Federovaný uživatel (ne skupina) v Microsoft Entra ID.
  • Spravovaný uživatel (nikoli skupina) nebo aplikace, které jsou přítomné v MICROSOFT Entra ID.

Pokud je novým vlastníkem uživatel Microsoft Entra, nemůže existovat jako uživatel v databázi, kde se nový vlastník stane novým vlastníkem databáze (dbo). Uživatel Microsoft Entra musí být nejprve odstraněn z databáze před vykonáním příkazu ALTER AUTHORIZATION měnícího vlastnictví databáze na nového uživatele. Další informace o konfiguraci uživatelů Microsoft Entra pomocí SLUŽBY SQL Database naleznete v tématu Konfigurace ověřování Microsoft Entra.

Požadavky na osobu, která příkaz vykonává: ALTER AUTHORIZATION Musíte se připojit k cílové databázi, abyste změnili vlastníka této databáze.

Následující typy účtů můžou změnit vlastníka databáze.

  • Přihlášení instančního objektu na úrovni služby, což je správce SQL zřízený při vytvoření logického serveru v Azure .
  • Správce Microsoft Entra pro logický server..
  • Aktuální vlastník databáze.

Následující tabulka shrnuje požadavky:

Executor Target Result
Přihlášení k ověřování SQL Serveru Přihlášení k ověřování SQL Serveru Success
Přihlášení k ověřování SQL Serveru Uživatel Microsoft Entra Fail
Uživatel Microsoft Entra Přihlášení k ověřování SQL Serveru Success
Uživatel Microsoft Entra Uživatel Microsoft Entra Success

Pokud chcete ověřit vlastníka databáze Microsoft Entra, spusťte následující příkaz Transact-SQL v uživatelské databázi (v tomto příkladu testdb).

SELECT CAST(owner_sid as uniqueidentifier) AS Owner_SID
FROM sys.databases
WHERE name = 'testdb';

Výstupem bude identifikátor GUID (například XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX), který odpovídá ID objektu uživatele Microsoft Entra nebo instančního objektu přiřazeného jako vlastník databáze. Můžete to ověřit tak, že zkontrolujete ID objektu uživatele v Microsoft Entra ID. Pokud je uživatel pro přihlášení k ověřování SQL Serveru vlastníkem databáze, spusťte v hlavní databázi následující příkaz, který ověří vlastníka databáze:

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;

Nejlepší praxe

Místo použití uživatelů Microsoft Entra jako jednotlivých vlastníků databáze použijte skupinu Microsoft Entra jako člena db_owner pevné databázové role. Následující postup ukazuje, jak nakonfigurovat zakázané přihlášení jako vlastníka databáze a nastavit skupinu Microsoft Entra (mydbogroup) jako člena db_owner role.

  1. Přihlaste se k SQL Serveru jako správce Microsoft Entra a změňte vlastníka databáze na zakázané přihlášení k ověřování SQL Serveru. Například z uživatelské databáze spusťte:

    ALTER AUTHORIZATION ON database::testdb TO DisabledLogin;
    
  2. Vytvořte skupinu Microsoft Entra, která by měla vlastnit databázi, a přidejte ji jako uživatele do uživatelské databáze. Například:

    CREATE USER [mydbogroup] FROM EXTERNAL PROVIDER;
    
  3. Do uživatelské databáze přidejte uživatele představující skupinu Microsoft Entra do db_owner pevné databázové role. Například:

    ALTER ROLE db_owner ADD MEMBER mydbogroup;
    

mydbogroup Teď můžou členové databázi centrálně spravovat jako členy db_owner role.

  • Když jsou členové této skupiny odebráni ze skupiny Microsoft Entra, automaticky ztratí oprávnění dbo pro tuto databázi.
  • Podobně pokud jsou do skupiny Microsoft Entra přidáni mydbogroup noví členové, automaticky získají přístup dbo pro tuto databázi.

Pokud chcete zkontrolovat, jestli má konkrétní uživatel platné oprávnění dbo, spusťte následující příkaz:

SELECT IS_MEMBER ('db_owner');

Návratová hodnota 1 označuje, že uživatel je členem role.

Permissions

Vyžaduje oprávnění PŘEVZÍT VLASTNICTVÍ pro entitu. Pokud nový vlastník není uživatelem, který tento příkaz spouští, vyžaduje také oprávnění 1) ZOSOBNIT pro nového vlastníka, pokud se jedná o uživatele nebo přihlášení; nebo 2) pokud je novým vlastníkem role, členství v roli nebo oprávnění ALTER k této roli; nebo 3) pokud je novým vlastníkem role aplikace, alter oprávnění k roli aplikace.

Examples

A. Převod vlastnictví tabulky

Následující příklad přenese vlastnictví tabulky Sprockets na uživatele MichikoOsada. Tabulka se nachází uvnitř schématu Parts.

ALTER AUTHORIZATION ON OBJECT::Parts.Sprockets TO MichikoOsada;
GO

Dotaz může vypadat také takto:

ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO

Pokud schéma objektů není součástí příkazu, databázový stroj vyhledá objekt ve výchozím schématu uživatelů. Například:

ALTER AUTHORIZATION ON Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON OBJECT::Sprockets TO MichikoOsada;

B. Převod vlastnictví zobrazení na vlastníka schématu

Následující příklad přenese vlastnictví zobrazení ProductionView06 na vlastníka schématu, který ho obsahuje. Zobrazení se nachází uvnitř schématu Production.

ALTER AUTHORIZATION ON OBJECT::Production.ProductionView06 TO SCHEMA OWNER;
GO

C. Převod vlastnictví schématu na uživatele

Následující příklad přenese vlastnictví schématu SeattleProduction11 na uživatele SandraAlayo.

ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO

D. Převod vlastnictví koncového bodu na přihlášení k SQL Serveru

Následující příklad přenese vlastnictví koncového bodu CantabSalesServer1 do JaePak. Vzhledem k tomu, že koncový bod je zabezpečitelný na úrovni serveru, je možné koncový bod přenést pouze do objektu zabezpečení na úrovni serveru.

platí pro: SQL Server 2008 (10.0.x) a novější.

ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO

E. Změna vlastníka tabulky

Každý z následujících příkladů změní vlastníka Sprockets tabulky v Parts databázi na uživatele MichikoOsadadatabáze .

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. Změna vlastníka databáze

Platí pro: SQL Server 2008 (10.0.x) a novější, systém PDW (Analytics Platform System), SQL Database.

Následující příklad změní vlastníka Parts databáze na přihlášení MichikoOsada.

ALTER AUTHORIZATION ON DATABASE::Parts TO MichikoOsada;

G. Změna vlastníka databáze na uživatele Microsoft Entra

V následujícím příkladu může správce Microsoft Entra pro SQL Server v organizaci s vlastní doménou cqclinic.onmicrosoft.comMicrosoft Entra změnit aktuální vlastnictví databáze targetDB a vytvořit existujícího uživatele richel@cqclinic.onmicorsoft.com Microsoft Entra vlastníkem nové databáze pomocí následujícího příkazu:

ALTER AUTHORIZATION ON database::targetDB TO [rachel@cqclinic.onmicrosoft.com];

Viz také

OBJECTPROPERTY (Transact-SQL)TYPEPROPERTY (Transact-SQL)EVENTDATA (Transact-SQL)