Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-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.
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;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;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
mydbogroupde 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)