ALTER AUTHORIZATION (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Megváltoztatja egy védhető objektum tulajdonjogát.

Transact-SQL szintaxis konvenciók

Note

A Microsoft Entra ID-t korábban Azure Active Directorynak (Azure AD) nevezték.

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

Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.

Arguments

< > class_type Annak az entitásnak a biztonságos osztálya, amelyhez a tulajdonost módosítják. Az OBJEKTUM az alapértelmezett.

Class Product
OBJECT A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb verziók, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).
ASSEMBLY A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database.
ASYMMETRIC KEY A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database.
AVAILABILITY GROUP A következőkre vonatkozik: SQL Server 2012 és újabb verziók.
CERTIFICATE A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database.
CONTRACT A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb verziók.
DATABASE A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database. További információért lásd:ALTER AUTHORIZATION adatbázisok.
ENDPOINT A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb verziók.
FULLTEXT CATALOG A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database.
FULLTEXT STOPLIST A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database.
MESSAGE TYPE A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb verziók.
REMOTE SERVICE BINDING A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb verziók.
ROLE A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database.
ROUTE A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb verziók.
SCHEMA A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb verziók, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).
SEARCH PROPERTY LIST A következőkre vonatkozik: SQL Server 2012 (11.x) és újabb, Azure SQL Database.
SERVER ROLE A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb verziók.
SERVICE A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb verziók.
SYMMETRIC KEY A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database.
TYPE A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database.
XML SCHEMA COLLECTION A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database.

entity_name Az entitás neve.

principal_name | SCHEMA TULAJDONOS: A biztonsági megbízó neve, aki az entitás tulajdonosa. Az adatbázis-objektumoknak egy egyszerű adatbázis tulajdonában kell lenniük; adatbázis-felhasználó vagy -szerepkör. A kiszolgálóobjektumoknak (például adatbázisoknak) egy kiszolgálónévnek (bejelentkezésnek) kell lenniük. A OWNER ( SCHEMA OWNER ) (*principal_name- jelölje, hogy az objektumot az a fő kellene birtokolnia, aki az objektum sémáját birtokolja.

Remarks

ALTER AUTHORIZATION használható bármely olyan szervezet tulajdonjogának megváltoztatására, amelynek tulajdonosa van. Az adatbázis-alapú entitások tulajdonjoga bármely adatbázisszintű taghoz átadható. A kiszolgálószintű entitások tulajdonjoga csak kiszolgálószintű tagoknak ruházható át.

Important

Az SQL Server 2005 (9.x) verziótól kezdve a felhasználó birtokolhat egy OBJEKTUMOT, vagy TYPE amelyet egy másik adatbázis-felhasználó sémája tartalmaz. Ez az SQL Server korábbi verzióinak viselkedésváltozása. További információ: OBJECTPROPERTY (Transact-SQL) és TYPEPROPERTY (Transact-SQL).

Az "objektum" típusú sémafüggvények tulajdonjoga átadható: táblák, nézetek, függvények, eljárások, üzenetsorok és szinonimák.

A következő entitások tulajdonjoga nem ruházható át: csatolt kiszolgálók, statisztikák, korlátozások, szabályok, alapértelmezett értékek, eseményindítók, Service Broker-üzenetsorok, hitelesítő adatok, partíciófüggvények, partíciós sémák, adatbázis-főkulcsok, szolgáltatás főkulcsa és eseményértesítések.

A következő biztonságos osztályok tagjainak tulajdonjoga nem ruházható át: kiszolgáló, bejelentkezés, felhasználó, alkalmazásszerepkör és oszlop.

A SCHEMA TULAJDONOS opció csak akkor érvényes, ha egy sémában található entitás tulajdonjogát átruházod. SCHEMA A TULAJDONOS átruházza az entitás tulajdonjogát annak a sémának tulajdonosára, amelyben az található. Csak az OBJEKTUM, TYPEvagy XML SCHEMA COLLECTION osztályú entitások séma-tartalmazottak.

Ha a cél entitás nem adatbázis, és az entitás át lesz adva egy új tulajdonoshoz, a célhoz tartozó összes engedély elveszik.

Note

A sémák nem egyenértékűek az adatbázis felhasználóival. A rendszerkatalógus nézeteivel azonosíthatja az adatbázis-felhasználók és a sémák közötti különbségeket.

Vegye figyelembe a következőket is:

Important

Az objektumok tulajdonosának megkeresésének egyetlen megbízható módja a sys.objects katalógusnézet lekérdezése. Egy típus tulajdonosának megkeresésének egyetlen megbízható módja a TYPEPROPERTY függvény használata.

Különleges esetek és feltételek

Az alábbi táblázat az engedélyezés módosítására vonatkozó különleges eseteket, kivételeket és feltételeket sorolja fel.

Class Condition
OBJECT Az eseményindítók, megkötések, szabályok, alapértelmezett értékek, statisztikák, rendszerobjektumok, üzenetsorok, indexelt nézetek vagy indexelt nézetekkel rendelkező táblák tulajdonjoga nem módosítható.
SCHEMA A tulajdonjog átadásakor a rendszer elveti a séma által tartalmazott objektumokra vonatkozó engedélyeket, amelyek nem rendelkeznek explicit tulajdonosokkal. A sys, dbo vagy information_schema tulajdonosa nem módosítható.
TYPE Nem lehet megváltoztatni a tulajdonjogot egy TYPE olyan gép esetében, amely a SY-hez vagy information_schema-hoz tartozik.
CONTRACT, MESSAGE TYPE vagy SERVICE A rendszerentitások tulajdonjoga nem módosítható.
SYMMETRIC KEY A globális ideiglenes kulcsok tulajdonjoga nem módosítható.
CERTIFICATE vagy ASYMMETRIC KEY Az entitások tulajdonjoga nem ruházható át szerepkörbe vagy csoportba.
ENDPOINT Az egyszerűnek bejelentkezésnek kell lennie.

ALTER AUTHORIZATION adatbázisokhoz

SQL Server esetében

Az új tulajdonosra vonatkozó követelmények: Az új tulajdonosnévnek a következők egyikének kell lennie:

  • SQL Server-hitelesítési bejelentkezés.
  • Windows-hitelesítési bejelentkezés Windows-felhasználót (nem csoportot) jelöl.
  • Windows-felhasználó, aki windowsos hitelesítési bejelentkezéssel hitelesít egy Windows-csoportot.

Követelmények a kijelentést végrehajtó ALTER AUTHORIZATION személy számára: Ha nem vagy a rendszergazdai fix szerver szerep tagja, legalább TAKE OWNERSHIP jogosultsággal kell rendelkezned az adatbázison, és az új tulajdonos bejelentkezésén IMPERSONATE engedélyed kell lenne.

Az Azure SQL Database-hez

Az új tulajdonosra vonatkozó követelmények: Az új tulajdonosnévnek a következők egyikének kell lennie:

  • SQL Server-hitelesítési bejelentkezés.
  • A Microsoft Entra-azonosítóban található összevont felhasználó (nem csoport).
  • Felügyelt felhasználó (nem csoport) vagy Microsoft Entra-azonosítóban található alkalmazás.

Ha az új tulajdonos Microsoft Entra-felhasználó, nem létezhet felhasználóként abban az adatbázisban, amelyben az új tulajdonos lesz az új adatbázis tulajdonosa (dbo). A Microsoft Entra felhasználót először ki kell távolítani az adatbázisból, mielőtt végrehajtaná a ALTER AUTHORIZATION kijelentést, amely az adatbázis tulajdonosát az új felhasználóra változtatja. További információ a Microsoft Entra-felhasználók SQL Database-sel való konfigurálásáról: Microsoft Entra-hitelesítés konfigurálása.

Követelmények a kijelentést végrehajtó ALTER AUTHORIZATION személy számára: Csatlakoznia kell a cél adatbázishoz, hogy megváltoztasd az adatbázis tulajdonosát.

Az alábbi típusú fiókok módosíthatják az adatbázis tulajdonosát.

  • A szolgáltatásszintű egyszerű bejelentkezés, amely az Azure-beli logikai kiszolgáló létrehozásakor kiépített SQL-rendszergazda.
  • A logikai kiszolgáló Microsoft Entra-rendszergazdája.
  • Az adatbázis jelenlegi tulajdonosa.

Az alábbi táblázat összefoglalja a követelményeket:

Executor Target Result
SQL Server-hitelesítés bejelentkezése SQL Server-hitelesítés bejelentkezése Success
SQL Server-hitelesítés bejelentkezése Microsoft Entra-felhasználó Fail
Microsoft Entra-felhasználó SQL Server-hitelesítés bejelentkezése Success
Microsoft Entra-felhasználó Microsoft Entra-felhasználó Success

Az adatbázis Microsoft Entra-tulajdonosának ellenőrzéséhez hajtsa végre a következő Transact-SQL parancsot egy felhasználói adatbázisban (ebben a példában testdb).

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

A kimenet egy GUID (például XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) lesz, amely megfelel az adatbázis tulajdonosaként hozzárendelt Microsoft Entra-felhasználó vagy szolgáltatásnév objektumazonosítójának. Ezt a felhasználó objektumazonosítójának Microsoft Entra-azonosítóban való ellenőrzésével ellenőrizheti. Ha egy SQL Server-hitelesítési bejelentkezési felhasználó az adatbázis tulajdonosa, hajtsa végre a következő utasítást a fő adatbázisban az adatbázis tulajdonosának ellenőrzéséhez:

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;

Ajánlott eljárások

AHelyett, hogy a Microsoft Entra-felhasználókat az adatbázis egyéni tulajdonosaiként használták, egy Microsoft Entra-csoportot használjon a db_owner rögzített adatbázis-szerepkör tagjaként. Az alábbi lépések bemutatják, hogyan konfigurálhat letiltott bejelentkezést adatbázis-tulajdonosként, és hogyan teheti a Microsoft Entra-csoportot (mydbogroup) a db_owner szerepkör tagává.

  1. Jelentkezzen be az SQL Serverre Microsoft Entra-rendszergazdaként, és módosítsa az adatbázis tulajdonosát egy letiltott SQL Server-hitelesítési bejelentkezésre. Például a felhasználói adatbázisból hajtsa végre a következőt:

    ALTER AUTHORIZATION ON database::testdb TO DisabledLogin;
    
  2. Hozzon létre egy Microsoft Entra-csoportot, amely az adatbázis tulajdonosa, és adja hozzá felhasználóként a felhasználói adatbázishoz. Például:

    CREATE USER [mydbogroup] FROM EXTERNAL PROVIDER;
    
  3. A felhasználói adatbázisban adja hozzá a Microsoft Entra csoportot képviselő felhasználót a db_owner rögzített adatbázis-szerepkörhöz. Például:

    ALTER ROLE db_owner ADD MEMBER mydbogroup;
    

A mydbogroup tagok mostantól központilag kezelhetik az adatbázist a db_owner szerepkör tagjaiként.

  • Ha a csoport tagjait eltávolítják a Microsoft Entra csoportból, automatikusan elveszítik az adatbázis dbo-engedélyeit.
  • Hasonlóképpen, ha új tagokat adnak hozzá a Microsoft Entra-csoporthoz mydbogroup , automatikusan kapják meg az adatbázis dbo-hozzáférését.

Annak ellenőrzéséhez, hogy egy adott felhasználó rendelkezik-e érvényes dbo-engedéllyel, hajtsa végre a következő utasítást:

SELECT IS_MEMBER ('db_owner');

Az 1 visszatérési érték azt jelzi, hogy a felhasználó tagja a szerepkörnek.

Permissions

Tulajdonosi jogosultságot igényel az entitáson. Ha az új tulajdonos nem az a felhasználó, aki végrehajtja ezt az utasítást, akkor az 1. megszemélyesítési engedélyt is meg kell adnia az új tulajdonosnak, ha az felhasználó vagy bejelentkezés; vagy 2) ha az új tulajdonos szerepkör, tagság a szerepkörben, vagy ALTER engedély a szerepkörre; vagy 3) ha az új tulajdonos egy alkalmazásszerepkör, módosítsa az alkalmazásszerepkör engedélyét.

Examples

A. Tábla tulajdonjogának átadása

Az alábbi példa a tábla Sprockets tulajdonjogát továbbítja a felhasználónak MichikoOsada. A tábla a sémában Partstalálható.

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

A lekérdezés az alábbihoz hasonlóan is nézhet ki:

ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO

Ha az objektumséma nem szerepel az utasítás részeként, az adatbázismotor megkeresi az objektumot a felhasználók alapértelmezett sémájában. Például:

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

B. Nézet tulajdonjogának átadása a sématulajdonosnak

Az alábbi példa a nézet ProductionView06 tulajdonjogát az azt tartalmazó séma tulajdonosának továbbítja. A nézet a sémában Productiontalálható.

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

C. Séma tulajdonjogának átadása egy felhasználónak

Az alábbi példa a séma SeattleProduction11 tulajdonjogát továbbítja a felhasználónak SandraAlayo.

ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO

D. Végpont tulajdonjogának átadása SQL Server-bejelentkezésbe

Az alábbi példa a végpont tulajdonjogát továbbítja a következőnek CantabSalesServer1JaePak: Mivel a végpont egy kiszolgálószintű biztonságos, a végpont csak egy kiszolgálószintű taghoz továbbítható.

Az: SQL Server 2008 (10.0.x) és újabb verziókra vonatkozik.

ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO

E. Tábla tulajdonosának módosítása

Az alábbi példák mindegyike az adatbázis táblájának Sprockets tulajdonosát Parts az adatbázis felhasználójára MichikoOsadamódosítja.

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. Adatbázis tulajdonosának módosítása

A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Analytics Platform System (PDW), SQL Database.

Az alábbi példa az adatbázis tulajdonosát Parts a bejelentkezésre MichikoOsadamódosítja.

ALTER AUTHORIZATION ON DATABASE::Parts TO MichikoOsada;

G. Adatbázis tulajdonosának módosítása Microsoft Entra-felhasználóra

Az alábbi példában az SQL Server microsoft entra-rendszergazdája egy egyéni Microsoft Entra-tartománnyal rendelkező cqclinic.onmicrosoft.comszervezetnél módosíthatja egy adatbázis targetDB jelenlegi tulajdonjogát, és az alábbi paranccsal egy meglévő Microsoft Entra-felhasználót richel@cqclinic.onmicorsoft.com tehet új adatbázis-tulajdonossá:

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

Lásd még:

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