ALTER AUTHORIZATION (Transact-SQL)

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

Icône Lien de rubriqueConventions de 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 | 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 de l'entité de sécurité 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 quelle entité de sécurité de niveau base de données. La propriété d'entités de niveau serveur peut être transférée à n'importe quelle entité de sécurité 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 Séparation du schéma et de l'utilisateur, 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 renvoyer 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 entités de sécurité 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, la base de données des ressources ou une base de données utilisée comme base de données de distribution. L'entité de sécurité doit être une connexion. Si l'entité de sécurité est une connexion Windows sans connexion SQL Server correspondante, elle doit avoir l'autorisation CONTROL SERVER et l'autorisation TAKE OWNERSHIP sur la base de données. Si l'entité de sécurité est une connexion SQL Server, elle ne peut pas être mappée à 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 active 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 le propriétaire 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

L'entité de sécurité 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 à une connexion SQL Server

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

ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO

Historique des modifications

Mise à jour du contenu

Ajout de ASYMMETRIC KEY à la liste.

Correction de <entity_type> en <class_type>.