Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
SQL-databas i Microsoft Fabric
Ändrar ägarskapet för ett säkerhetsobjekt.
Transact-SQL syntaxkonventioner
Anmärkning
Microsoft Entra-ID kallades tidigare 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
}
Anmärkning
Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.
Argumentpunkter
< > class_type Är den skyddsbara klassen för den entitet som ägaren ändras för. OBJECT är standardvärdet.
Klass | Produkt |
---|---|
OBJEKT | Gäller för: SQL Server 2008 (10.0.x) och senare, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW). |
FÖRSAMLING | Gäller för: SQL Server 2008 (10.0.x) och senare Azure SQL Database. |
ASYMMETRISK NYCKEL | Gäller för: SQL Server 2008 (10.0.x) och senare Azure SQL Database. |
TILLGÄNGLIGHETSGRUPP | Gäller för: SQL Server 2012 och senare. |
INTYG | Gäller för: SQL Server 2008 (10.0.x) och senare Azure SQL Database. |
KONTRAKT | Gäller för: SQL Server 2008 (10.0.x) och senare. |
DATABAS | Gäller för: SQL Server 2008 (10.0.x) och senare Azure SQL Database. Mer information finns i ALTER AUTHORIZATION for databases (Ändra auktorisering för databaser). |
SLUTPUNKT | Gäller för: SQL Server 2008 (10.0.x) och senare. |
FULLTEXT KATALOG | Gäller för: SQL Server 2008 (10.0.x) och senare Azure SQL Database. |
STOPPLISTA FULLTEXT | Gäller för: SQL Server 2008 (10.0.x) och senare Azure SQL Database. |
MEDDELANDETYP | Gäller för: SQL Server 2008 (10.0.x) och senare. |
FJÄRRTJÄNSTBINDNING | Gäller för: SQL Server 2008 (10.0.x) och senare. |
ROLL | Gäller för: SQL Server 2008 (10.0.x) och senare Azure SQL Database. |
VÄG | Gäller för: SQL Server 2008 (10.0.x) och senare. |
SCHEMAT | Gäller för: SQL Server 2008 (10.0.x) och senare, Azure SQL Database, Azure Synapse Analytics, Analytics Platform System (PDW). |
SÖK FASTIGHETSLISTA | Gäller för: SQL Server 2012 (11.x) och senare Azure SQL Database. |
Server roll | Gäller för: SQL Server 2008 (10.0.x) och senare. |
TJÄNST | Gäller för: SQL Server 2008 (10.0.x) och senare. |
SYMMETRISK NYCKEL | Gäller för: SQL Server 2008 (10.0.x) och senare Azure SQL Database. |
TYP | Gäller för: SQL Server 2008 (10.0.x) och senare Azure SQL Database. |
XML-schema-samling | Gäller för: SQL Server 2008 (10.0.x) och senare Azure SQL Database. |
entity_name Är namnet på entiteten.
principal_name | SCHEMAÄGARE Namnet på säkerhetsobjektet som ska äga entiteten. Databasobjekt måste ägas av ett huvudnamn för databasen. en databasanvändare eller roll. Serverobjekt (till exempel databaser) måste ägas av ett serverhuvudnamn (en inloggning). Ange SCHEMAÄGARE som *principal_name – för att ange att objektet ska ägas av det huvudnamn som äger objektets schema.
Anmärkningar
ALTER AUTHORIZATION kan användas för att ändra ägarskapet för en entitet som har en ägare. Ägarskapet för databasbaserade entiteter kan överföras till valfritt huvudnamn på databasnivå. Ägarskap för entiteter på servernivå kan endast överföras till huvudnamn på servernivå.
Viktigt!
Från och med SQL Server 2005 (9.x) kan en användare äga ett OBJEKT eller EN TYP som finns i ett schema som ägs av en annan databasanvändare. Det här är en ändring av beteendet från tidigare versioner av SQL Server. Mer information finns i OBJECTPROPERTY (Transact-SQL) och TYPEPROPERTY (Transact-SQL).
Ägarskap för följande schemabaserade entiteter av typen "objekt" kan överföras: tabeller, vyer, funktioner, procedurer, köer och synonymer.
Ägarskap för följande entiteter kan inte överföras: länkade servrar, statistik, begränsningar, regler, standardvärden, utlösare, Service Broker-köer, autentiseringsuppgifter, partitionsfunktioner, partitionsscheman, databashuvudnycklar, tjänsthuvudnyckel och händelsemeddelanden.
Ägarskap för medlemmar i följande skyddsbara klasser kan inte överföras: server, inloggning, användare, programroll och kolumn.
Alternativet SCHEMAÄGARE är endast giltigt när du överför ägarskapet för en schemaberoende entitet. SCHEMAÄGAREN överför ägarskapet för entiteten till ägaren av schemat där den finns. Endast entiteter av klassen OBJECT, TYPE eller XML SCHEMA COLLECTION är schemabaserade.
Om målentiteten inte är en databas och entiteten överförs till en ny ägare, kommer alla behörigheter för målet att tas bort.
Anmärkning
Scheman motsvarar inte databasanvändare. Använd systemkatalogvyer för att identifiera eventuella skillnader mellan databasanvändare och scheman.
Observera också följande:
Viktigt!
Det enda tillförlitliga sättet att hitta ägaren till ett objekt är att fråga katalogvyn sys.objects . Det enda tillförlitliga sättet att hitta ägaren till en typ är att använda funktionen TYPEPROPERTY.
Särskilda fall och villkor
I följande tabell visas särskilda fall, undantag och villkor som gäller för ändring av auktorisering.
Klass | Tillstånd |
---|---|
OBJEKT | Det går inte att ändra ägarskapet för utlösare, begränsningar, regler, standardvärden, statistik, systemobjekt, köer, indexerade vyer eller tabeller med indexerade vyer. |
SCHEMAT | När ägarskapet överförs kommer behörigheter för schemabaserade objekt som inte har explicita ägare att tas bort. Det går inte att ändra ägaren till sys, dbo eller information_schema. |
TYP | Det går inte att ändra ägarskapet för en TYP som tillhör sys eller information_schema. |
KONTRAKT, MEDDELANDETYP eller TJÄNST | Det går inte att ändra ägarskapet för systementiteter. |
SYMMETRISK NYCKEL | Det går inte att ändra ägarskapet för globala temporära nycklar. |
CERTIFIKAT ELLER ASYMMETRISK NYCKEL | Det går inte att överföra ägarskapet för dessa entiteter till en roll eller grupp. |
SLUTPUNKT | Huvudkontot måste vara en inloggning. |
ÄNDRA AUKTORISERING för databaser
För SQL Server
Krav för den nya ägaren: Det nya ägarobjektet måste vara något av följande:
- En SQL Server-autentiseringsinloggning.
- En Windows-autentiseringsinloggning som representerar en Windows-användare (inte en grupp).
- En Windows-användare som autentiserar via en Windows-autentiseringsinloggning som representerar en Windows-grupp.
Krav för den person som kör ALTER AUTHORIZATION-instruktionen: Om du inte är medlem i den fasta serverrollen sysadmin måste du ha minst behörigheten TA ÄGARSKAP i databasen och måste ha behörigheten PERSONIFIERa vid den nya ägarinloggningen.
För Azure SQL Database
Krav för den nya ägaren: Det nya ägarobjektet måste vara något av följande:
- En SQL Server-autentiseringsinloggning.
- En federerad användare (inte en grupp) som finns i Microsoft Entra-ID.
- En hanterad användare (inte en grupp) eller ett program som finns i Microsoft Entra-ID.
Om den nya ägaren är en Microsoft Entra-användare kan den inte finnas som en användare i databasen där den nya ägaren blir den nya databasägaren (dbo). Microsoft Entra-användaren måste först tas bort från databasen innan instruktionen ALTER AUTHORIZATION körs och ändrar databasägarskapet till den nya användaren. Mer information om hur du konfigurerar Microsoft Entra-användare med SQL Database finns i Konfigurera Microsoft Entra-autentisering.
Krav för den person som kör ALTER AUTHORIZATION-instruktionen: Du måste ansluta till måldatabasen för att ändra databasens ägare.
Följande typer av konton kan ändra ägaren till en databas.
- Huvudinloggningen på tjänstnivå, som är SQL-administratören som etablerades när den logiska servern i Azure skapades.
- Microsoft Entra-administratören för den logiska servern..
- Databasens nuvarande ägare.
I följande tabell sammanfattas kraven:
Testamentsexekutor | Mål | Resultat |
---|---|---|
SQL Server-autentiseringsinloggning | SQL Server-autentiseringsinloggning | Framgång |
SQL Server-autentiseringsinloggning | Microsoft Entra-användare | Fel |
Microsoft Entra-användare | SQL Server-autentiseringsinloggning | Framgång |
Microsoft Entra-användare | Microsoft Entra-användare | Framgång |
Om du vill verifiera en Microsoft Entra-ägare av databasen kör du följande Transact-SQL kommando i en användardatabas (i det här exemplet testdb
).
SELECT CAST(owner_sid as uniqueidentifier) AS Owner_SID
FROM sys.databases
WHERE name = 'testdb';
Utdata kommer att vara ett GUID (till exempel XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) som motsvarar objekt-ID:t för Microsoft Entra-användaren eller tjänstens huvudnamn som tilldelats som databasägare. Du kan verifiera detta genom att kontrollera användarens objekt-ID i Microsoft Entra-ID. När en SQL Server-autentiseringsinloggningsanvändare är databasägare kör du följande instruktion i huvuddatabasen för att verifiera databasägaren:
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;
Bästa praxis
I stället för att använda Microsoft Entra-användare som enskilda ägare av databasen använder du en Microsoft Entra-grupp som medlem i db_owner fast databasroll. Följande steg visar hur du konfigurerar en inaktiverad inloggning som databasägare och gör en Microsoft Entra-grupp (mydbogroup
) medlem i den db_owner rollen.
Logga in på SQL Server som Microsoft Entra-administratör och ändra databasens ägare till en inaktiverad SQL Server-autentiseringsinloggning. Från användardatabasen kan du till exempel köra:
ALTER AUTHORIZATION ON database::testdb TO DisabledLogin;
Skapa en Microsoft Entra-grupp som ska äga databasen och lägga till den som användare i användardatabasen. Till exempel:
CREATE USER [mydbogroup] FROM EXTERNAL PROVIDER;
I användardatabasen lägger du till användaren som representerar Microsoft Entra-gruppen i db_owner fast databasroll. Till exempel:
ALTER ROLE db_owner ADD MEMBER mydbogroup;
mydbogroup
Nu kan medlemmarna centralt hantera databasen som medlemmar i den db_owner rollen.
- När medlemmar i den här gruppen tas bort från Microsoft Entra-gruppen förlorar de automatiskt dbo-behörigheterna för den här databasen.
- På samma sätt om nya medlemmar läggs till
mydbogroup
i Microsoft Entra-gruppen får de automatiskt dbo-åtkomsten för den här databasen.
Om du vill kontrollera om en specifik användare har den gällande dbo-behörigheten måste användaren köra följande instruktion:
SELECT IS_MEMBER ('db_owner');
Ett returvärde på 1 anger att användaren är medlem i rollen.
Behörigheter
Kräver behörigheten TA ÄGARSKAP för entiteten. Om den nya ägaren inte är den användare som kör den här instruktionen, kräver också antingen 1) PERSONIFIERa behörighet på den nya ägaren om det är en användare eller inloggning; eller 2) om den nya ägaren är en roll, medlemskap i rollen eller ALTER-behörighet för rollen; eller 3) om den nya ägaren är en programroll, ÄNDRA behörighet för programrollen.
Exempel
A. Överföra ägarskapet för en tabell
I följande exempel överförs ägarskapet för tabellen Sprockets
till användaren MichikoOsada
. Tabellen finns i schemat Parts
.
ALTER AUTHORIZATION ON OBJECT::Parts.Sprockets TO MichikoOsada;
GO
Frågan kan också se ut så här:
ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO
Om objektschemat inte ingår som en del av instruktionen letar databasmotorn efter objektet i användarens standardschema. Till exempel:
ALTER AUTHORIZATION ON Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON OBJECT::Sprockets TO MichikoOsada;
B. Överföra ägarskapet för en vy till schemaägaren
I följande exempel överförs ägarskapet till vyn ProductionView06
till ägaren av schemat som innehåller det. Vyn finns i schemat Production
.
ALTER AUTHORIZATION ON OBJECT::Production.ProductionView06 TO SCHEMA OWNER;
GO
C. Överföra ägarskapet för ett schema till en användare
I följande exempel överförs ägarskapet för schemat SeattleProduction11
till användaren SandraAlayo
.
ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO
D. Överföra ägarskapet för en slutpunkt till en SQL Server-inloggning
I följande exempel överförs ägarskapet för slutpunkten CantabSalesServer1
till JaePak
. Eftersom slutpunkten är en säker servernivå kan slutpunkten endast överföras till ett huvudnamn på servernivå.
gäller för: SQL Server 2008 (10.0.x) och senare.
ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO
E. Ändra ägare till en tabell
Vart och ett av följande exempel ändrar tabellens ägare Sprockets
i Parts
databasen till databasanvändaren 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. Ändra ägare till en databas
Gäller för: SQL Server 2008 (10.0.x) och senare, Analytics Platform System (PDW), SQL Database.
I följande exempel ändras databasens Parts
ägare till inloggningen MichikoOsada
.
ALTER AUTHORIZATION ON DATABASE::Parts TO MichikoOsada;
G. Ändra ägaren till en databas till en Microsoft Entra-användare
I följande exempel kan en Microsoft Entra-administratör för SQL Server i en organisation med en anpassad Microsoft Entra-domän med namnet cqclinic.onmicrosoft.com
, ändra det aktuella ägarskapet för en databas targetDB
och göra en befintlig Microsoft Entra-användare richel@cqclinic.onmicorsoft.com
till ny databasägare med hjälp av följande kommando:
ALTER AUTHORIZATION ON database::targetDB TO [rachel@cqclinic.onmicrosoft.com];
Se även
OBJECTPROPERTY (Transact-SQL)TYPEPROPERTY (Transact-SQL)EVENTDATA (Transact-SQL)