ALTER AUTHORIZATION (Transact-SQL)

Change la propriété d'un élément sécurisable.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

ALTER AUTHORIZATION
   ON [ <class_type>:: ] entity_name
   TO { SCHEMA OWNER | principal_name }
[;]

<class_type> ::=
    {
        OBJECT | ASSEMBLY | ASYMMETRIC KEY | 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
    }

Arguments

  • <class_type>
    Classe sécurisable de l'entité pour laquelle il y a un changement de propriétaire. OBJECT est la valeur par défaut.

  • entity_name
    Nom de l'entité.

  • principal_name
    Nom du principal qui possède l'entité.

Notes

ALTER AUTHORIZATION peut s'utiliser pour modifier la propriété d'une entité qui a un propriétaire. La propriété d'entités contenues dans une base de données peut être transférée à n'importe quel principal de niveau base de données. La propriété d'entités de niveau serveur peut être transférée à n'importe quel principal de niveau serveur.

Important

À partir de SQL Server 2005, un utilisateur peut être propriétaire d'un OBJECT ou d'un TYPE contenu dans un schéma appartenant à un autre utilisateur de base de données. Il s'agit là d'une différence par rapport aux versions antérieures de SQL Server. Pour plus d'informations, consultez OBJECTPROPERTY (Transact-SQL) et TYPEPROPERTY (Transact-SQL).

La propriété des entités suivantes, contenues dans un schéma et de type « objet » peut être transférée : tables, vues, fonctions, procédures, files d'attente et synonymes.

La propriété des entités suivantes ne peut pas être transférée : serveurs liés, statistiques, contraintes, règles, valeurs par défaut, déclencheurs, files d'attente Service Broker, informations d'identification, fonctions de partition, schémas de partition, clés principales de base de données, clé principale de service et notifications d'événements.

La propriété des membres des classes sécurisables suivantes ne peut pas être transférée : serveur, connexion, utilisateur, rôle d'application et colonne.

L'option SCHEMA OWNER n'est valide que lorsque vous transférez la propriété d'une entité contenue dans un schéma. SCHEMA OWNER transférera la propriété de l'entité au propriétaire du schéma dans lequel elle réside. Seules les entités des classes OBJECT, TYPE ou XML SCHEMA COLLECTION sont contenues dans des schémas.

Si l'entité cible n'est pas une base de données et que l'entité est transférée à un nouveau propriétaire, toutes les autorisations de la cible seront supprimées.

AttentionAttention

Dans SQL Server 2005, le comportement des schémas n'est pas le même que dans les versions antérieures de SQL Server. Un code qui suppose que les schémas sont équivalents aux utilisateurs de base de données peut retourner des résultats incorrects. Vous ne devez pas recourir aux anciens affichages catalogue, notamment sysobjects, dans une base de données où une des instructions DDL suivantes a été utilisée : 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. Dans une base de données où une de ces instructions a été utilisée, vous devez recourir aux nouveaux affichages catalogue. Les nouveaux affichages catalogue prennent en compte la séparation des principaux et des schémas introduite dans SQL Server 2005. Pour plus d'informations sur les affichages catalogue, consultez Affichages catalogue (Transact-SQL).

En outre, notez les points suivants :

Important

La seule méthode fiable pour rechercher le propriétaire d'un objet est d'interroger l'affichage catalogue sys.objects. La seule méthode fiable pour rechercher le propriétaire d'un type est d'utiliser la fonction TYPEPROPERTY.

Cas particuliers et conditions

Le tableau suivant récapitule les cas particuliers, les exceptions et les conditions qui s'appliquent à l'autorisation de modification.

Classe

Condition

DATABASE

Il est impossible de modifier le propriétaire des bases de données système master, model, tempdb, de la base de données des ressources ou d'une base de données utilisée comme base de données de distribution. Le principal doit être une connexion. Si le principal est une connexion Windows sans connexion SQL Server correspondante, il doit avoir l'autorisation CONTROL SERVER et l'autorisation TAKE OWNERSHIP sur la base de données. Si le principal est une connexion SQL Server, il ne peut pas être mappé à un certificat ni à une clé asymétrique. Les alias dépendants seront mappés avec le nouveau propriétaire de la base de données. Le SID du DBO sera mis à jour à la fois dans la base de données actuelle et dans sys.databases.

OBJECT

Impossible de modifier la propriété des déclencheurs, des contraintes, des règles, des valeurs par défaut, des statistiques, des objets système, des files d'attente, des vues indexées ou des tables avec des vues indexées.

SCHEMA

Lors d'un transfert de propriété, les autorisations sur des objets contenus dans des schémas n'ayant pas de propriétaires explicites seront supprimées. Impossible de modifier le propriétaire de sys, dbo ou information_schema.

TYPE

Impossible de modifier la propriété d'un TYPE qui appartient à sys ou information_schema.

CONTRACT, MESSAGE TYPE ou SERVICE

Impossible de modifier la propriété des entités système.

SYMMETRIC KEY

Impossible de modifier la propriété des clés temporaires globales.

CERTIFICATE ou ASYMMETRIC KEY

Impossible de transférer la propriété de ces entités vers un rôle ou un groupe.

ENDPOINT

Le principal doit être une connexion.

Autorisations

Il faut obligatoirement l'autorisation TAKE OWNERSHIP sur l'entité. Si le nouveau propriétaire n'est pas l'utilisateur qui exécute cette instruction, il faut aussi soit 1) l'autorisation IMPERSONATE sur le nouveau propriétaire s'il s'agit d'un utilisateur ou d'une connexion, soit 2) si le nouveau propriétaire est un rôle, l'appartenance à ce rôle ou l'autorisation ALTER sur le rôle, soit 3) si le nouveau propriétaire est un rôle d'application, l'autorisation ALTER sur le rôle d'application.

Exemples

A.Transfert de la propriété d'une table

L'exemple suivant transfère la propriété de la table Sprockets à l'utilisateur MichikoOsada. La table se trouve dans le schéma Parts.

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

La requête peut aussi se présenter de la façon suivante :

ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO

B.Transfert de la propriété d'une vue au propriétaire du schéma

L'exemple suivant transfère la propriété de la vue ProductionView06 au propriétaire du schéma qui la contient. La vue se trouve dans le schéma Production.

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

C.Transfert de la propriété d'un schéma à un utilisateur

L'exemple suivant transfère la propriété du schéma SeattleProduction11 à l'utilisateur SandraAlayo.

ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO

D.Transfert de la propriété d'un point de terminaison à un compte de connexion SQL Server

L'exemple suivant transfère la propriété du point de terminaison CantabSalesServer1 à JaePak. Comme le point de terminaison est un élément sécurisable au niveau serveur, il ne peut être transféré qu'à un principal au niveau du serveur.

ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO

Voir aussi

Référence

OBJECTPROPERTY (Transact-SQL)

TYPEPROPERTY (Transact-SQL)

EVENTDATA (Transact-SQL)