Delen via


ALTER MACHTIGING (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric Preview

Hiermee wordt het eigendom van een beveiligd object gewijzigd.

Transact-SQL syntaxis-conventies

Note

Microsoft Entra-id werd voorheen Azure Active Directory (Azure AD) genoemd.

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

Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.

Arguments

< > class_type Is de beveiligbare klasse van de entiteit waarvoor de eigenaar wordt gewijzigd. OBJECT is de standaardwaarde.

Class Product
OBJECT Van toepassing op: SQL Server 2008 (10.0.x) en hoger, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).
ASSEMBLY Van toepassing op: SQL Server 2008 (10.0.x) en hoger, Azure SQL Database.
ASYMMETRIC KEY Van toepassing op: SQL Server 2008 (10.0.x) en hoger, Azure SQL Database.
AVAILABILITY GROUP Van toepassing op: SQL Server 2012 en hoger.
CERTIFICATE Van toepassing op: SQL Server 2008 (10.0.x) en hoger, Azure SQL Database.
CONTRACT Van toepassing op: SQL Server 2008 (10.0.x) en hoger.
DATABASE Van toepassing op: SQL Server 2008 (10.0.x) en hoger, Azure SQL Database. Zie ALTER AUTHORIZATION voor databases voor meer informatie.
ENDPOINT Van toepassing op: SQL Server 2008 (10.0.x) en hoger.
FULLTEXT CATALOG Van toepassing op: SQL Server 2008 (10.0.x) en hoger, Azure SQL Database.
FULLTEXT STOPLIST Van toepassing op: SQL Server 2008 (10.0.x) en hoger, Azure SQL Database.
MESSAGE TYPE Van toepassing op: SQL Server 2008 (10.0.x) en hoger.
SERVICEBINDING VANAF AFSTAND Van toepassing op: SQL Server 2008 (10.0.x) en hoger.
ROLE Van toepassing op: SQL Server 2008 (10.0.x) en hoger, Azure SQL Database.
ROUTE Van toepassing op: SQL Server 2008 (10.0.x) en hoger.
SCHEMA Van toepassing op: SQL Server 2008 (10.0.x) en hoger, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW).
ZOEK EIGENSCHAPPENLIJST Van toepassing op: SQL Server 2012 (11.x) en hoger, Azure SQL Database.
SERVER ROLE Van toepassing op: SQL Server 2008 (10.0.x) en hoger.
SERVICE Van toepassing op: SQL Server 2008 (10.0.x) en hoger.
SYMMETRIC KEY Van toepassing op: SQL Server 2008 (10.0.x) en hoger, Azure SQL Database.
TYPE Van toepassing op: SQL Server 2008 (10.0.x) en hoger, Azure SQL Database.
XML-schema verzameling Van toepassing op: SQL Server 2008 (10.0.x) en hoger, Azure SQL Database.

entity_name Is de naam van de entiteit.

principal_name | DE NAAM VAN DE SCHEMA-EIGENAAR van de beveiligingsprincipaal die eigenaar is van de entiteit. Databaseobjecten moeten eigendom zijn van een database-principal; een databasegebruiker of -rol. Serverobjecten (zoals databases) moeten eigendom zijn van een server-principal (een aanmelding). Geef SCHEMA-EIGENAAR op als de *principal_name- om aan te geven dat het object eigendom moet zijn van de principal die eigenaar is van het schema van het object.

Remarks

ALTER AUTHORIZATION kan worden gebruikt om het eigendom te wijzigen van elke entiteit die een eigenaar heeft. Het eigendom van in de database opgenomen entiteiten kan worden overgedragen naar elke principal op databaseniveau. Het eigendom van entiteiten op serverniveau kan alleen worden overgedragen naar principals op serverniveau.

Important

Vanaf SQL Server 2005 (9.x) kan een gebruiker eigenaar zijn van een OBJECT of TYPE dat is opgenomen in een schema dat eigendom is van een andere databasegebruiker. Dit is een wijziging van het gedrag van eerdere versies van SQL Server. Zie OBJECTPROPERTY (Transact-SQL) en TYPEPROPERTY (Transact-SQL) voor meer informatie.

Het eigendom van de volgende schema-ingesloten entiteiten van het type 'object' kunnen worden overgedragen: tabellen, weergaven, functies, procedures, wachtrijen en synoniemen.

Het eigendom van de volgende entiteiten kan niet worden overgedragen: gekoppelde servers, statistieken, beperkingen, regels, standaardinstellingen, triggers, Service Broker-wachtrijen, referenties, partitiefuncties, partitieschema's, databasehoofdsleutels, servicehoofdsleutels en gebeurtenismeldingen.

Het eigendom van leden van de volgende beveiligbare klassen kan niet worden overgedragen: server, aanmelding, gebruiker, toepassingsrol en kolom.

De optie SCHEMA-EIGENAAR is alleen geldig wanneer u het eigendom van een in een schema opgenomen entiteit overdraagt. SCHEMA-EIGENAAR zal het eigendom van de entiteit overdragen aan de eigenaar van het schema waarin deze zich bevindt. Alleen entiteiten van klasseOBJECT, TYPE of XML SCHEMA COLLECTION zijn schema-ingesloten.

Als de doelentiteit geen database is en de entiteit wordt overgedragen aan een nieuwe eigenaar, worden alle machtigingen voor het doel verwijderd.

Note

Schema's zijn niet gelijk aan databasegebruikers. Gebruik systeemcatalogusweergaven om eventuele verschillen tussen databasegebruikers en schema's te identificeren.

Let ook op het volgende:

Important

De enige betrouwbare manier om de eigenaar van een object te vinden, is door een query uit te voeren op de catalogusweergave sys.objects . De enige betrouwbare manier om de eigenaar van een type te vinden is door de functie TYPEPROPERTY te gebruiken.

Speciale gevallen en voorwaarden

De volgende tabel bevat speciale gevallen, uitzonderingen en voorwaarden die van toepassing zijn op het wijzigen van autorisatie.

Class Condition
OBJECT Kan het eigendom van triggers, beperkingen, regels, standaardinstellingen, statistieken, systeemobjecten, wachtrijen, geïndexeerde weergaven of tabellen met geïndexeerde weergaven niet wijzigen.
SCHEMA Wanneer het eigendom wordt overgedragen, worden machtigingen voor schema-ingesloten objecten die geen expliciete eigenaren hebben, verwijderd. Kan de eigenaar van sys, dbo of information_schema niet wijzigen.
TYPE Kan het eigendom van een TYPE dat deel uitmaakt van sys of information_schema niet wijzigen.
CONTRACT, BERICHTTYPE of SERVICE Kan het eigendom van systeementiteiten niet wijzigen.
SYMMETRIC KEY Kan het eigendom van globale tijdelijke sleutels niet wijzigen.
CERTIFICAAT OF ASYMMETRISCHE SLEUTEL Kan het eigendom van deze entiteiten niet overdragen aan een rol of groep.
ENDPOINT De principal moet een aanmelding zijn.

ALTER AUTHORIZATION voor databases

Voor SQL Server

Vereisten voor de nieuwe eigenaar: De nieuwe eigenaar-principal moet een van de volgende zijn:

  • Een aanmelding bij SQL Server-verificatie.
  • Een Aanmelding bij Windows-verificatie die een Windows-gebruiker vertegenwoordigt (geen groep).
  • Een Windows-gebruiker die wordt geverifieerd via een Windows-verificatieaanmelding die een Windows-groep vertegenwoordigt.

Vereisten voor de persoon die de ALTER AUTHORIZATION-instructie uitvoert: Als u geen lid bent van de vaste serverfunctie sysadmin , moet u ten minste de machtiging EIGENDOM OVERNEMEN hebben voor de database en moet u IMITATE-machtiging hebben voor de aanmelding van de nieuwe eigenaar.

Voor Azure SQL Database

Vereisten voor de nieuwe eigenaar: De nieuwe eigenaar-principal moet een van de volgende zijn:

  • Een aanmelding bij SQL Server-verificatie.
  • Een federatieve gebruiker (geen groep) aanwezig in Microsoft Entra-id.
  • Een beheerde gebruiker (niet een groep) of een toepassing die aanwezig is in Microsoft Entra-id.

Als de nieuwe eigenaar een Microsoft Entra-gebruiker is, kan deze niet bestaan als gebruiker in de database waarin de nieuwe eigenaar de nieuwe database-eigenaar (dbo) wordt. De Microsoft Entra-gebruiker moet eerst uit de database worden verwijderd voordat u de INSTRUCTIE ALTER AUTHORIZATION uitvoert, waardoor het eigendom van de database wordt gewijzigd in de nieuwe gebruiker. Zie Microsoft Entra-verificatie configureren voor meer informatie over het configureren van Microsoft Entra-gebruikers met SQL Database.

Vereisten voor de persoon die de ALTER AUTHORIZATION-instructie uitvoert: U moet verbinding maken met de doeldatabase om de eigenaar van die database te wijzigen.

De volgende typen accounts kunnen de eigenaar van een database wijzigen.

  • De principalaanmelding op serviceniveau. Dit is de SQL-beheerder die is ingericht toen de logische server in Azure werd gemaakt.
  • De Microsoft Entra-beheerder voor de logische server.
  • De huidige eigenaar van de database.

De volgende tabel bevat een overzicht van de vereisten:

Executor Target Result
Aanmelding bij SQL Server-verificatie Aanmelding bij SQL Server-verificatie Success
Aanmelding bij SQL Server-verificatie Microsoft Entra-gebruiker Fail
Microsoft Entra-gebruiker Aanmelding bij SQL Server-verificatie Success
Microsoft Entra-gebruiker Microsoft Entra-gebruiker Success

Als u een Microsoft Entra-eigenaar van de database wilt controleren, voert u de volgende Transact-SQL opdracht uit in een gebruikersdatabase (in dit voorbeeld testdb).

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

De uitvoer is een GUID (zoals XXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) die overeenkomt met de object-id van de Microsoft Entra-gebruiker of service-principal die is toegewezen als de eigenaar van de database. U kunt dit controleren door de object-id van de gebruiker in Microsoft Entra-id te controleren. Wanneer een aanmeldingsgebruiker voor SQL Server-verificatie de eigenaar van de database is, voert u de volgende instructie uit in de hoofddatabase om de eigenaar van de database te verifiëren:

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;

Best practice

Gebruik in plaats van Microsoft Entra-gebruikers te gebruiken als afzonderlijke eigenaren van de database, een Microsoft Entra-groep als lid van de db_owner vaste databaserol. De volgende stappen laten zien hoe u een uitgeschakelde aanmelding configureert als de eigenaar van de database en hoe u een Microsoft Entra-groep (mydbogroup) lid van de db_owner rol maakt.

  1. Meld u als Microsoft Entra-beheerder aan bij SQL Server en wijzig de eigenaar van de database in een uitgeschakelde SQL Server-verificatieaanmelding. Voer bijvoorbeeld vanuit de gebruikersdatabase het volgende uit:

    ALTER AUTHORIZATION ON database::testdb TO DisabledLogin;
    
  2. Maak een Microsoft Entra-groep die eigenaar moet zijn van de database en voeg deze toe als gebruiker aan de gebruikersdatabase. For example:

    CREATE USER [mydbogroup] FROM EXTERNAL PROVIDER;
    
  3. Voeg in de gebruikersdatabase de gebruiker die de Microsoft Entra-groep vertegenwoordigt toe aan de db_owner vaste databaserol. For example:

    ALTER ROLE db_owner ADD MEMBER mydbogroup;
    

mydbogroup De leden kunnen de database nu centraal beheren als leden van de db_owner rol.

  • Wanneer leden van deze groep worden verwijderd uit de Microsoft Entra-groep, verliezen ze automatisch de dbo-machtigingen voor deze database.
  • Als er ook nieuwe leden worden toegevoegd aan mydbogroup de Microsoft Entra-groep, krijgen ze automatisch de dbo-toegang voor deze database.

Als u wilt controleren of een specifieke gebruiker de effectieve dbo-machtiging heeft, moet de gebruiker de volgende instructie uitvoeren:

SELECT IS_MEMBER ('db_owner');

Een retourwaarde van 1 geeft aan dat de gebruiker lid is van de rol.

Permissions

Vereist de machtiging TAKE OWNERSHIP voor de entiteit. Als de nieuwe eigenaar niet de gebruiker is die deze instructie uitvoert, is ook 1) IMITATE-machtiging vereist voor de nieuwe eigenaar als het een gebruiker of aanmelding is; of 2) als de nieuwe eigenaar een rol, lidmaatschap van de rol of ALTER-machtiging voor de rol is; of 3) als de nieuwe eigenaar een toepassingsrol is, alter-machtiging voor de toepassingsrol.

Examples

A. Eigendom van een tabel overdragen

In het volgende voorbeeld wordt het eigendom van de tabel Sprockets overgedragen aan de gebruiker MichikoOsada. De tabel bevindt zich in het schema Parts.

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

De query kan er ook als volgt uitzien:

ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO

Als het objectschema niet is opgenomen als onderdeel van de instructie, zoekt de database-engine naar het object in het standaardschema van de gebruikers. For example:

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

B. Eigendom van een weergave overdragen aan de schema-eigenaar

In het volgende voorbeeld wordt het eigendom van de weergave ProductionView06 overgedragen aan de eigenaar van het schema dat het bevat. De weergave bevindt zich in het schema Production.

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

C. Eigendom van een schema overdragen aan een gebruiker

In het volgende voorbeeld wordt het eigendom van het schema SeattleProduction11 overgedragen aan de gebruiker SandraAlayo.

ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO

D. Eigendom van een eindpunt overdragen aan een SQL Server-aanmelding

In het volgende voorbeeld wordt het eigendom van het eindpunt CantabSalesServer1 overgedragen naar JaePak. Omdat het eindpunt beveiligbaar is op serverniveau, kan het eindpunt alleen worden overgedragen naar een principal op serverniveau.

van toepassing op: SQL Server 2008 (10.0.x) en hoger.

ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO

E. De eigenaar van een tabel wijzigen

In elk van de volgende voorbeelden wordt de eigenaar van de Sprockets tabel in de Parts database gewijzigd in de databasegebruiker 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. De eigenaar van een database wijzigen

Van toepassing op: SQL Server 2008 (10.0.x) en hoger, Analytics Platform System (PDW), SQL Database.

In het volgende voorbeeld wordt de eigenaar van de Parts database gewijzigd in de aanmelding MichikoOsada.

ALTER AUTHORIZATION ON DATABASE::Parts TO MichikoOsada;

G. De eigenaar van een database wijzigen in een Microsoft Entra-gebruiker

In het volgende voorbeeld kan een Microsoft Entra-beheerder voor SQL Server in een organisatie met een aangepast Microsoft Entra-domein met de naam cqclinic.onmicrosoft.com, het huidige eigendom van een database targetDB wijzigen en een bestaande Microsoft Entra-gebruiker richel@cqclinic.onmicorsoft.com de nieuwe database-eigenaar maken met behulp van de volgende opdracht:

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

See Also

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