CREATE SCHEMA (Transact-SQL)

Mis à jour : 17 juillet 2006

Crée un schéma dans la base de données active. La transaction CREATE SCHEMA peut également créer des tables et des vues dans le nouveau schéma et établir des autorisations GRANT, DENY ou REVOKE sur ces objets.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

CREATE SCHEMA schema_name_clause [ <schema_element> [ ...n ] ]

<schema_name_clause> ::=
    {
        schema_name
    | AUTHORIZATION owner_name
    | schema_name AUTHORIZATION owner_name
    }

<schema_element> ::= 
    { 
        table_definition | view_definition | grant_statement 
        revoke_statement | deny_statement 
    }

Arguments

  • schema_name
    Nom qui identifie le schéma dans cette base de données.
  • AUTHORIZATION owner_name
    Spécifie le nom de l'entité de sécurité au niveau base de données qui est propriétaire du schéma. Cette entité peut posséder d'autres schémas et peut ne pas utiliser le schéma actif comme schéma par défaut.
  • table_definition
    Spécifie une instruction CREATE TABLE qui crée une table dans le schéma. L'entité de sécurité qui exécute cette instruction doit avoir l'autorisation CREATE TABLE sur la base de données active.
  • view_definition
    Spécifie une instruction CREATE VIEW qui crée une vue dans le schéma. L'entité de sécurité qui exécute cette instruction doit avoir l'autorisation CREATE VIEW sur la base de données active.
  • grant_statement
    Spécifie une instruction GRANT qui accorde des autorisations sur tout élément sécurisable à l'exception du nouveau schéma.
  • revoke_statement
    Spécifie une instruction REVOKE qui révoque des autorisations sur tout élément sécurisable à l'exception du nouveau schéma.
  • deny_statement
    Spécifie une instruction DENY qui refuse des autorisations sur tout élément sécurisable à l'exception du nouveau schéma.

Notes

ms189462.note(fr-fr,SQL.90).gifRemarque :
Les instructions qui contiennent CREATE SCHEMA AUTHORIZATION sans spécifier un nom sont acceptées uniquement pour des raisons de compatibilité descendante.

CREATE SCHEMA peut créer un schéma, les tables et les vues qu'il contient, et accorder (GRANT), révoquer (REVOKE) ou refuser (DENY) des autorisations sur tout élément sécurisable dans une instruction. Cette instruction doit être exécutée en tant que lot séparé. Les objets créés par l'instruction CREATE SCHEMA sont créés à l'intérieur du schéma en cours de création.

Les transactions CREATE SCHEMA sont atomiques. Si une erreur se produit pendant l'exécution d'une instruction CREATE SCHEMA, aucun des éléments sécurisables spécifiés n'est créé et aucune autorisation n'est accordée.

Il est possible de répertorier les éléments sécurisables à créer par l'instruction CREATE SCHEMA dans n'importe quel ordre, excepté pour les vues qui référencent d'autres vues. Dans ce cas, la vue référencée doit être créée avant la vue qui la référence.

Par conséquent, une instruction GRANT peut accorder une autorisation sur un objet avant la création de cet objet, ou une instruction CREATE VIEW peut apparaître avant les instructions CREATE TABLE qui créent les tables référencées par la vue. De même, les instructions CREATE TABLE peuvent déclarer des clés étrangères sur des tables qui sont définies ultérieurement dans l'instruction CREATE SCHEMA.

ms189462.note(fr-fr,SQL.90).gifRemarque :
Dans SQL Server 2005, DENY et REVOKE sont pris en charge dans des instructions CREATE SCHEMA. Les clauses DENY et REVOKE sont exécutées dans leur ordre d'apparition dans l'instruction CREATE SCHEMA.

L'entité de sécurité qui exécute CREATE SCHEMA peut désigner une autre entité de sécurité de base de données en tant que propriétaire du schéma à créer. Pour cela, il est nécessaire de disposer d'autorisations supplémentaires, comme l'explique la section « Autorisations » plus loin dans cette rubrique.

Le nouveau schéma appartient à l'une des entités de sécurité de base de données suivantes : utilisateur de base de données, rôle de base de données ou rôle d'application. Les objets créés dans un schéma appartiennent au propriétaire du schéma. La valeur principal_id de ces objets est NULL dans sys.objects. Il est possible de transférer la propriété des objets contenus dans le schéma à n'importe quelle entité de sécurité de base de données, mais le propriétaire du schéma conserve toujours l'autorisation CONTROL sur les objets dans le schéma.

ms189462.Caution(fr-fr,SQL.90).gifAttention :
Dans SQL Server 2005, le comportement des schémas est différent par rapport aux 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 ou 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).

Note relative à la suppression de fonctionnalités

Les instructions CREATE SCHEMA qui ne spécifient pas de nom de schéma continuent à être prises en charge pour des raisons de compatibilité descendante. De telles instructions ne créent pas réellement un schéma dans la base de données, mais créent plutôt des tables et des vues, et accordent des autorisations. Les entités de sécurité n'ont pas besoin de l'autorisation CREATE SCHEMA pour exécuter cette version antérieure de CREATE SCHEMA, car aucun schéma n'est créé. Cette fonctionnalité sera retirée dans une version future de SQL Server.

Autorisations

Nécessite l'autorisation CREATE SCHEMA sur la base de données.

Pour créer un objet spécifié dans l'instruction CREATE SCHEMA, l'utilisateur doit disposer de l'autorisation CREATE correspondante.

Pour spécifier un autre utilisateur comme propriétaire du schéma à créer, l'appelant doit avoir l'autorisation IMPERSONATE sur cet utilisateur. Si un rôle de base de données est spécifié comme propriétaire, l'appelant doit bénéficier de l'appartenance au rôle ou de l'autorisation ALTER sur le rôle.

ms189462.note(fr-fr,SQL.90).gifRemarque :
Pour la compatibilité descendante de la syntaxe, aucune vérification n'est effectuée sur l'autorisation CREATE SCHEMA car aucun schéma n'est créé.

Exemples

Le code exemple suivant crée le schéma Sprockets possédé par Annik qui contient la table NineProngs. L'instruction accorde l'autorisation SELECT à Mandar et la refuse à Prasanna. Remarquez que Sprockets et NineProngs sont créés dans une même instruction.

USE AdventureWorks;
CREATE SCHEMA Sprockets AUTHORIZATION Annik
    CREATE TABLE NineProngs (source int, cost int, partnumber int)
    GRANT SELECT TO Mandar
    DENY SELECT TO Prasanna;
GO 

Voir aussi

Référence

ALTER SCHEMA (Transact-SQL)
DROP SCHEMA (Transact-SQL)
GRANT (Transact-SQL)
DENY (Transact-SQL)
REVOKE (Transact-SQL)
CREATE VIEW (Transact-SQL)
EVENTDATA (Transact-SQL)
sys.schemas (Transact-SQL)

Autres ressources

Séparation du schéma et de l'utilisateur

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

17 juillet 2006

Contenu modifié :
  • Correction de la syntaxe.