Megosztás a következőn keresztül:


ENGEDÉLYEZÉS MÓDOSÍTÁSA (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.
ASZIMMETRIKUS KULCS A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database.
RENDELKEZÉSRE ÁLLÁSI CSOPORT 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ó: ALTER AUTHORIZATION for databases.
ENDPOINT A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb verziók.
FULLTEXT KATALÓGUS A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database.
Teljes szöveges leállítási lista A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database.
ÜZENET TÍPUSA A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb verziók.
TÁVOLI SZOLGÁLTATÁS KAPCSOLÁS 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).
KERESÉSI TULAJDONSÁGLISTA A következőkre vonatkozik: SQL Server 2012 (11.x) és újabb, Azure SQL Database.
KISZOLGÁLÓI SZEREPKÖR 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.
SZIMMETRIKUS KULCS 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-SÉMAGYŰJTEMÉNY A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb, Azure SQL Database.

entity_name Az entitás neve.

principal_name | AZ entitást birtokbaadó biztonsági tag SÉMATULAJDONOS neve. 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. Adja meg a SÉMA TULAJDONOSA *principal_name- értéket, amely azt jelzi, hogy az objektumnak az objektum sémáját birtokbaadó tagnak kell lennie.

Remarks

Az ALTER AUTHORIZATION bármely tulajdonossal rendelkező entitás tulajdonjogának módosítására használható. 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 -től (9.x) kezdődően a felhasználó birtokolhat egy objektumot vagy TÍPUSt, amelyet egy másik adatbázis-felhasználó tulajdonában lévő séma 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 SÉMATULAJDONOS beállítás csak akkor érvényes, ha egy séma által tartalmazott entitás tulajdonjogát adja át. A SÉMATULAJDONOS az entitás tulajdonjogát annak a sémának a tulajdonosára továbbítja, amelyben található. Csak az OBJEKTUM, TÍPUS vagy XML SÉMAGYŰJTEMÉNY osztály entitásai tartalmaznak sémát.

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 A sys vagy information_schema típushoz tartozó típus tulajdonjoga nem módosítható.
SZERZŐDÉS, ÜZENETTÍPUS VAGY SZOLGÁLTATÁS A rendszerentitások tulajdonjoga nem módosítható.
SZIMMETRIKUS KULCS A globális ideiglenes kulcsok tulajdonjoga nem módosítható.
TANÚSÍTVÁNY vagy ASZIMMETRIKUS KULCS Az entitások tulajdonjoga nem ruházható át szerepkörbe vagy csoportba.
ENDPOINT Az egyszerűnek bejelentkezésnek kell lennie.

ADATBÁZISOK ENGEDÉLYEZÉSÉNEK MÓDOSÍTÁSA

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.

Az ALTER AUTHORIZATION utasítást végrehajtó személy követelményei: Ha nem tagja a sysadmin rögzített kiszolgálói szerepkörnek, legalább TULAJDONOSi jogosultsággal kell rendelkeznie az adatbázisban, és impERSONATE engedéllyel kell rendelkeznie az új tulajdonosi bejelentkezéshez.

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 el kell távolítani az adatbázisból, mielőtt végrehajtaná az ALTER AUTHORIZATION utasítást, amely az adatbázis tulajdonjogát az új felhasználóra módosítja. 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.

Az ALTER AUTHORIZATION utasítást végrehajtó személy követelményei: Az adatbázis tulajdonosának módosításához csatlakoznia kell a céladatbázishoz.

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)