ALTER AUTHORIZATION (Transact-SQL)ALTER AUTHORIZATION (Transact-SQL)

SI APPLICA A: sìSQL Server (a partire dalla versione 2008) sìDatabase SQL di AzuresìAzure SQL Data Warehouse sìParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Modifica la proprietà di un'entità a protezione diretta.Changes the ownership of a securable.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

-- 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 SQL Data Warehouse  

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    
}    

ArgomentiArguments

<class_type> è la classe a protezione diretta dell'entità per la quale viene modificato il proprietario.<class_type> Is the securable class of the entity for which the owner is being changed. OBJECT è l'impostazione predefinita.OBJECT is the default.

OBJECTOBJECT SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database, Azure SQL Data Warehouse, Parallel Data WarehouseParallel Data Warehouse.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database, Azure SQL Data Warehouse, Parallel Data WarehouseParallel Data Warehouse.
ASSEMBLYASSEMBLY SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.
ASYMMETRIC KEYASYMMETRIC KEY SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.
AVAILABILITY GROUPAVAILABILITY GROUP SI APPLICA A: da SQL Server 2012 fino a SQL Server 2017SQL Server 2017.APPLIES TO: SQL Server 2012 through SQL Server 2017SQL Server 2017.
CERTIFICATECERTIFICATE SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.
CONTRACTCONTRACT SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
DATABASEDATABASE SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database. Per altre informazioni, vedere la sezione ALTER AUTHORIZATION per i database riportata di seguito.For more information,see ALTER AUTHORIZATION FOR databases section below.
ENDPOINTENDPOINT SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
FULLTEXT CATALOGFULLTEXT CATALOG SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.
FULLTEXT STOPLISTFULLTEXT STOPLIST SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.
MESSAGE TYPEMESSAGE TYPE SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
REMOTE SERVICE BINDINGREMOTE SERVICE BINDING SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
ROLEROLE SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.
ROUTEROUTE SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
SCHEMASCHEMA SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database, Azure SQL Data Warehouse, Parallel Data WarehouseParallel Data Warehouse.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database, Azure SQL Data Warehouse, Parallel Data WarehouseParallel Data Warehouse.
SEARCH PROPERTY LISTSEARCH PROPERTY LIST SI APPLICA A: da SQL Server 2012 (11.x)SQL Server 2012 (11.x) fino a SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.APPLIES TO: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.
SERVER ROLESERVER ROLE SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
SERVICESERVICE SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
SYMMETRIC KEYSYMMETRIC KEY SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.
TYPETYPE SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.
XML SCHEMA COLLECTIONXML SCHEMA COLLECTION SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.

entity_name entity_name
Nome dell'entità.Is the name of the entity.

principal_name | SCHEMA OWNERprincipal_name | SCHEMA OWNER
Nome dell'entità di sicurezza a cui verrà trasferita la proprietà dell'entità.Name of the security principal that will own the entity. Gli oggetti di database devono essere di proprietà di un'entità di database oppure di un utente o ruolo del database.Database objects must be owned by a database principal; a database user or role. Gli oggetti server, ad esempio i database, devono essere di proprietà di un'entità server (un account di accesso).Server objects (such as databases) must be owned by a server principal (a login). Specificare SCHEMA OWNER come principal_name per indicare che l'oggetto deve essere di proprietà dell'entità che possiede lo schema dell'oggetto.Specify SCHEMA OWNER as the principal_name to indicate that the object should be owned by the principal that owns the schema of the object.

RemarksRemarks

È possibile utilizzare l'istruzione ALTER AUTHORIZATION per modificare la proprietà di qualsiasi entità associata a un proprietario.ALTER AUTHORIZATION can be used to change the ownership of any entity that has an owner. La proprietà di entità incluse in un database può essere trasferita a qualsiasi entità a livello di database.Ownership of database-contained entities can be transferred to any database-level principal. La proprietà di entità a livello di server può essere trasferita solo a entità a livello di server.Ownership of server-level entities can be transferred only to server-level principals.

Importante

A partire da SQL Server 2005SQL Server 2005, un utente può essere proprietario di un elemento OBJECT o TYPE contenuto in uno schema di proprietà di un altro utente di database,Beginning with SQL Server 2005SQL Server 2005, a user can own an OBJECT or TYPE that is contained by a schema owned by another database user. diversamente da quanto consentito nelle versioni precedenti di SQL ServerSQL Server.This is a change of behavior from earlier versions of SQL ServerSQL Server. Per altre informazioni, vedere OBJECTPROPERTY (Transact-SQL) e TYPEPROPERTY (Transact-SQL).For more information, see OBJECTPROPERTY (Transact-SQL) and TYPEPROPERTY (Transact-SQL).

È possibile trasferire la proprietà delle seguenti entità incluse nello schema di tipo "object": tabelle, viste, funzioni, procedure, code e sinonimi.Ownership of the following schema-contained entities of type "object" can be transferred: tables, views, functions, procedures, queues, and synonyms.

Non è possibile trasferire la proprietà delle entità seguenti: server collegati, statistiche, vincoli, regole, valori predefiniti, trigger, code di Service BrokerService Broker, credenziali, funzioni di partizione, schemi di partizione, chiavi master del database, chiavi master del servizio e notifiche di eventi.Ownership of the following entities cannot be transferred: linked servers, statistics, constraints, rules, defaults, triggers, Service BrokerService Broker queues, credentials, partition functions, partition schemes, database master keys, service master key, and event notifications.

Non è possibile trasferire la proprietà di membri delle classi a protezione diretta seguenti: server, account di accesso, utenti, ruoli applicazione e colonne.Ownership of members of the following securable classes cannot be transferred: server, login, user, application role, and column.

L'opzione SCHEMA OWNER è valida solo in caso di trasferimento della proprietà di un'entità inclusa nello schema.The SCHEMA OWNER option is only valid when you are transferring ownership of a schema-contained entity. L'opzione SCHEMA OWNER trasferirà la proprietà dell'entità al proprietario dello schema in cui si trova.SCHEMA OWNER will transfer ownership of the entity to the owner of the schema in which it resides. Solo le entità della classe OBJECT, TYPE o XML SCHEMA COLLECTION sono incluse nello schema.Only entities of class OBJECT, TYPE, or XML SCHEMA COLLECTION are schema-contained.

Se l'entità di destinazione non è un database e l'entità sta per essere trasferita a un nuovo proprietario, verranno eliminate tutte le autorizzazioni per la destinazione.If the target entity is not a database and the entity is being transferred to a new owner, all permissions on the target will be dropped.

Attenzione

Il comportamento degli schemi in SQL Server 2005SQL Server 2005 è diverso rispetto alle versioni precedenti di SQL ServerSQL Server.In SQL Server 2005SQL Server 2005, the behavior of schemas changed from the behavior in earlier versions of SQL ServerSQL Server. È possibile che il codice in cui gli schemi sono equivalenti agli utenti del database non restituisca risultati corretti.Code that assumes that schemas are equivalent to database users may not return correct results. Non utilizzare le viste del catalogo delle versioni precedenti, inclusa sysobjects, nei database in cui sia già stata utilizzata una delle istruzioni DLL seguenti: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION.Old catalog views, including sysobjects, should not be used in a database in which any of the following DDL statements has ever been used: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. In questi database è necessario usare le nuove viste del catalogo,In a database in which any of these statements has ever been used, you must use the new catalog views. in cui si tiene conto della separazione tra entità e schemi introdotta in SQL Server 2005SQL Server 2005.The new catalog views take into account the separation of principals and schemas that was introduced in SQL Server 2005SQL Server 2005. Per altre informazioni sulle viste del catalogo, vedere Viste del catalogo (Transact-SQL).For more information about catalog views, see Catalog Views (Transact-SQL).

Si noti inoltre quanto segue:Also, note the following:

Importante

L'unico modo affidabile per individuare il proprietario di un oggetto consiste nell'eseguire una query sulla vista del catalogo sys.objects.The only reliable way to find the owner of a object is to query the sys.objects catalog view. L'unico modo affidabile per cercare il proprietario di un tipo consiste nell'utilizzare la funzione TYPEPROPERTY.The only reliable way to find the owner of a type is to use the TYPEPROPERTY function.

Casi e condizioni specialiSpecial Cases and Conditions

Nella tabella seguente sono elencati casi, eccezioni e condizioni speciali validi per la modifica delle autorizzazioni.The following table lists special cases, exceptions, and conditions that apply to altering authorization.

ClasseClass CondizioneCondition
OBJECTOBJECT Non è possibile modificare la proprietà di trigger, vincoli, regole, valori predefiniti, statistiche, oggetti di sistema, code, viste indicizzate o tabelle con viste indicizzate.Cannot change ownership of triggers, constraints, rules, defaults, statistics, system objects, queues, indexed views, or tables with indexed views.
SCHEMASCHEMA In caso di trasferimento della proprietà, verranno eliminate le autorizzazioni per gli oggetti inclusi nello schema che non dispongono di proprietari espliciti.When ownership is transferred, permissions on schema-contained objects that do not have explicit owners will be dropped. Non è possibile modificare il proprietario di sys, dbo o information_schema.Cannot change the owner of sys, dbo, or information_schema.
TYPETYPE Non è possibile modificare la proprietà di una classe TYPE appartenente a sys o information_schema.Cannot change ownership of a TYPE that belongs to sys or information_schema.
CONTRACT, MESSAGE TYPE o SERVICECONTRACT, MESSAGE TYPE, or SERVICE Non è possibile modificare la proprietà delle entità di sistema.Cannot change ownership of system entities.
SYMMETRIC KEYSYMMETRIC KEY Non è possibile modificare la proprietà delle chiavi temporanee globali.Cannot change ownership of global temporary keys.
CERTIFICATE o ASYMMETRIC KEYCERTIFICATE or ASYMMETRIC KEY Non è possibile trasferire la proprietà di queste entità a un ruolo o gruppo.Cannot transfer ownership of these entities to a role or group.
ENDPOINTENDPOINT L'entità deve essere un account di accesso.The principal must be a login.

ALTER AUTHORIZATION per i databaseALTER AUTHORIZATION for databases

SI APPLICA A: SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.APPLIES TO: SQL Server 2017SQL Server 2017, Database SQL di AzureAzure SQL Database.

Per SQL Server:For SQL Server:

Requisiti per il nuovo proprietario: Requirements for the new owner:
La nuova entità proprietario deve essere uno dei valori seguenti:The new owner principal must be one of the following:

  • Un account di accesso con autenticazione di SQL Server.A SQL Server authentication login.
  • Un account di accesso con autenticazione di Windows che rappresenta un utente di Windows (non un gruppo).A Windows authentication login representing a Windows user (not a group).
  • Un utente di Windows che esegue l'autenticazione usando un account di accesso con autenticazione di Windows che rappresenta un gruppo di Windows.A Windows user that authenticates through a Windows authentication login representing a Windows group.

Requisiti per l'utente che esegue l'istruzione ALTER AUTHORIZATION:Requirements for the person executing the ALTER AUTHORIZATION statement:
Chi non è membro del ruolo predefinito del server sysadmin, deve avere almeno un'autorizzazione TAKE OWNERSHIP nel database e deve disporre dell'autorizzazione IMPERSONATE nel nuovo account di accesso proprietario.If you are not a member of the sysadmin fixed server role, you must have at least TAKE OWNERSHIP permission on the database, and must have IMPERSONATE permission on the new owner login.

Per il database SQL di Azure:For Azure SQL Database:

Requisiti per il nuovo proprietario: Requirements for the new owner:
La nuova entità proprietario deve essere uno dei valori seguenti:The new owner principal must be one of the following:

  • Un account di accesso con autenticazione di SQL Server.A SQL Server authentication login.
  • Un utente federato (non un gruppo) presente in Azure AD.A federated user (not a group) present in Azure AD.
  • Un utente gestito (non un gruppo) o un'applicazione presente in Azure AD.A managed user (not a group) or an application present in Azure AD.

Nota

Se il nuovo proprietario è un utente di Azure Active Directory, non può esistere come utente nel database in cui il nuovo proprietario diventerà il nuovo proprietario del database.If the new owner is an Azure Active Directory user, it cannot exist as a user in the database where the new owner will become the new DBO. È necessario rimuovere l'utente di Azure AD dal database prima di eseguire l'istruzione ALTER AUTHORIZATION che modifica la proprietà del database impostandola sul nuovo utente.Such Azure AD user must be first removed from the database before executing the ALTER AUTHORIZATION statement changing the database ownership to the new user. Per altre informazioni sulla configurazione di utenti di Azure Active Directory con il database SQL, vedere Connessione al database SQL oppure a SQL Data Warehouse con l'autenticazione di Azure Active Directory.For more information about configuring an Azure Active Directory users with SQL Database, see Connecting to SQL Database or SQL Data Warehouse By Using Azure Active Directory Authentication.

Requisiti per l'utente che esegue l'istruzione ALTER AUTHORIZATION:Requirements for the person executing the ALTER AUTHORIZATION statement:
È necessario connettersi al database di destinazione per modificare il proprietario di tale database.You must connect to the target database to change the owner of that database.

Il proprietario di un database può essere modificato dai tipi seguenti di account.The following types of accounts can change the owner of a database.

  • L'account di accesso dell'entità di livello servizioThe service-level principal login. (l'amministratore di SQL Azure indicato durante la creazione del server logico).(The SQL Azure administrator provisioned when the logical server was created.)
  • L'amministratore di Azure Active Directory per il server SQL di Azure.The Azure Active Directory administrator for the Azure SQL Server.
  • Il proprietario corrente del database.The current owner of the database.

Nella tabella seguente vengono riepilogati i requisiti:The following table summarizes the requirements:

EsecutoreExecutor DestinazioneTarget RisultatoResult
Account di accesso con autenticazione di SQL ServerSQL Server Authentication login Account di accesso con autenticazione di SQL ServerSQL Server Authentication login Esito positivoSuccess
Account di accesso con autenticazione di SQL ServerSQL Server Authentication login Utente di Azure ADAzure AD user Esito negativoFail
Utente di Azure ADAzure AD user Account di accesso con autenticazione di SQL ServerSQL Server Authentication login Esito positivoSuccess
Utente di Azure ADAzure AD user Utente di Azure ADAzure AD user Esito positivoSuccess

Per verificare un proprietario del database di Azure AD, eseguire il comando Transact-SQL seguente in un database utente (in questo esempio testdb).To verify an Azure AD owner of the database execute the following Transact-SQL command in a user database (in this example testdb).

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

L'output sarà un identificatore (simile a 6D8B81F6-7C79-444C-8858-4AF896C03C67) che corrisponde all'ObjectID di Azure AD assegnato a richel@cqclinic.onmicrosoft.comThe output will be an identifier (such as 6D8B81F6-7C79-444C-8858-4AF896C03C67) which corresponds to Azure AD ObjectID assigned to richel@cqclinic.onmicrosoft.com
Quando il proprietario del database è un account di accesso con autenticazione di SQL Server, eseguire l'istruzione seguente nel database master per verificare il proprietario del database:When a SQL Server authentication login user is the database owner, execute the following statement in the master database to verify the database owner:

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;  

Procedura consigliataBest practice

Anziché usare gli utenti di Azure AD come singoli proprietari del database, usare un gruppo di Azure AD come membro del ruolo predefinito del database db_owner.Instead of using Azure AD users as individual owners of the database, use an Azure AD group as a member of the db_owner fixed database role. La procedura seguente illustra come configurare un account di accesso disabilitato come proprietario del database e trasformare un gruppo di Azure Active Directory (mydbogroup) in un membro del ruolo db_owner.The following steps, show how to configure a disabled login as the database owner, and make an Azure Active Directory group (mydbogroup) a member of the db_owner role.

  1. Accedere a SQL Server come amministratore di Azure AD e modificare il proprietario del database in un account di accesso con autenticazione di SQL Server disabilitato.Login to SQL Server as Azure AD admin, and change the owner of the database to a disabled SQL Server authentication login. Ad esempio, eseguire il comando seguente dal database utente:For example, from the user database execute:
    ALTER AUTHORIZATION ON database::testdb TO DisabledLogin;
  2. Creare un gruppo di Azure AD che diventerà proprietario del database e aggiungerlo come utente al database utente.Create an Azure AD group that should own the database and add it as a user to the user database. Ad esempioFor example:
    CREATE USER [mydbogroup] FROM EXTERNAL PROVIDER;
  3. Nel database utente aggiungere l'utente che rappresenta il gruppo di Azure AD al ruolo predefinito del database db_owner.In the user database add the user representing the Azure AD group, to the db_owner fixed database role. Ad esempioFor example:
    ALTER ROLE db_owner ADD MEMBER mydbogroup;

A questo punto i membri mydbogroup possono gestire centralmente il database come membri del ruolo db_owner.Now the mydbogroup members can centrally manage the database as members of the db_owner role.

  • Quando i membri di questo gruppo vengono rimossi dal gruppo di Azure AD, perdono automaticamente le autorizzazioni dbo per il database.When members of this group are removed from the Azure AD group, they automatically loose the dbo permissions for this database.
  • Analogamente, i nuovi membri aggiunti al gruppo di Azure Active Directory mydbogroup, ottengono l'accesso dbo per il database.Similarly if new members are added to mydbogroup Azure AD group, they automatically gain the dbo access for this database.

Per verificare se un utente specifico dispone dell'autorizzazione dbo valida, l'utente deve eseguire l'istruzione seguente:To check if a specific user has the effective dbo permission, have the user execute the following statement:

SELECT IS_MEMBER ('db_owner');  

Se il valore restituito è 1, significa che l'utente è un membro del ruolo.A return value of 1 indicates the user is a member of the role.

PermissionsPermissions

È richiesta l'autorizzazione TAKE OWNERSHIP per l'entità.Requires TAKE OWNERSHIP permission on the entity. Se il nuovo proprietario non è l'utente che sta eseguendo l'istruzione 1) è richiesta l'autorizzazione IMPERSONATE per il nuovo proprietario se si tratta di un utente o un account di accesso, oppure 2) se il nuovo proprietario è un ruolo, è richiesta l'appartenenza al ruolo o l'autorizzazione ALTER per tale ruolo, oppure 3) se il nuovo proprietario è un ruolo applicazione, è richiesta l'autorizzazione ALTER per il ruolo applicazione.If the new owner is not the user that is executing this statement, also requires either, 1) IMPERSONATE permission on the new owner if it is a user or login; or 2) if the new owner is a role, membership in the role, or ALTER permission on the role; or 3) if the new owner is an application role, ALTER permission on the application role.

EsempiExamples

A.A. Trasferire la proprietà di una tabellaTransfer ownership of a table

Nell'esempio seguente la proprietà della tabella Sprockets viene trasferita all'utente MichikoOsada.The following example transfers ownership of table Sprockets to user MichikoOsada. La tabella è inclusa nello schema Parts.The table is located inside schema Parts.

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

La query potrebbe essere simile alla seguente:The query could also look like the following:

ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;    
GO    

Se lo schema degli oggetti non è incluso come parte dell'istruzione, il Motore di databaseDatabase Engine cercherà l'oggetto nello schema predefinito degli utenti.If the objects schema is not included as part of the statement, the Motore di databaseDatabase Engine will look for the object in the users default schema. Ad esempioFor example:

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

B.B. Trasferire la proprietà di una vista al proprietario dello schemaTransfer ownership of a view to the schema owner

Nell'esempio seguente la proprietà della vista ProductionView06 viene trasferita al proprietario dello schema che la contiene.The following example transfers ownership the view ProductionView06 to the owner of the schema that contains it. La vista è inclusa nello schema Production.The view is located inside schema Production.

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

C.C. Trasferire la proprietà di uno schema a un utenteTransfer ownership of a schema to a user

Nell'esempio seguente la proprietà dello schema SeattleProduction11 viene trasferita all'utente SandraAlayo.The following example transfers ownership of the schema SeattleProduction11 to user SandraAlayo.

ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;    
GO    

D.D. Trasferire la proprietà di un endpoint a un account di accesso di SQL ServerTransfer ownership of an endpoint to a SQL Server login

Nell'esempio seguente la proprietà dell'endpoint CantabSalesServer1 viene trasferita a JaePak.The following example transfers ownership of endpoint CantabSalesServer1 to JaePak. Poiché è un'entità a protezione diretta a livello di server, l'endpoint può essere trasferito solo a un'entità a livello di server.Because the endpoint is a server-level securable, the endpoint can only be transferred to a server-level principal.

Si applica a: SQL Server 2008SQL Server 2008 tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;    
GO    

E.E. Modifica del proprietario di una tabellaChanging the owner of a table

In tutti gli esempi seguenti il proprietario della tabella Sprockets nel database Parts viene modificato nell'utente database MichikoOsada.Each of the following examples changes the owner of the Sprockets table in the Parts database to the database user 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.F. Modifica del proprietario di un databaseChanging the owner of a database

SI APPLICA A: da SQL Server 2008SQL Server 2008 fino a SQL Server 2017SQL Server 2017, Parallel Data WarehouseParallel Data Warehouse, Database SQLSQL Database.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Parallel Data WarehouseParallel Data Warehouse, Database SQLSQL Database.

Nell'esempio seguente il proprietario del database Parts viene modificato nell'account di accesso MichikoOsada.The following example change the owner of the Parts database to the login MichikoOsada.

ALTER AUTHORIZATION ON DATABASE::Parts TO MichikoOsada;    

G.G. Modifica del proprietario di un database SQL in un utente di AD AzureChanging the owner of a SQL Database to an Azure AD User

Nell'esempio seguente un amministratore di Azure Active Directory per SQL Server in un'organizzazione con un account di Active Directory denominato cqclinic.onmicrosoft.com può modificare la proprietà corrente di un database targetDB e impostare un utente AAD richel@cqclinic.onmicorsoft.com come nuovo proprietario del database usando il comando seguente:In the following example, an Azure Active Directory administrator for SQL Server in an organization with an active directory named cqclinic.onmicrosoft.com, can change the current ownership of a database targetDB and make an AAD user richel@cqclinic.onmicorsoft.com the new database owner using the following command:

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

Si noti che per gli utenti di Azure AD è necessario racchiudere il nome utente tra parantesi quadre.Note that for Azure AD users the brackets around the user name must be used.

Vedere ancheSee Also

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