sp_addextendedproperty (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Ajoute une nouvelle propriété étendue à un objet de base de données.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_addextendedproperty
    [ @name = ] N'name'
    [ , [ @value = ] value ]
    [ , [ @level0type = ] 'level0type' ]
    [ , [ @level0name = ] N'level0name' ]
    [ , [ @level1type = ] 'level1type' ]
    [ , [ @level1name = ] N'level1name' ]
    [ , [ @level2type = ] 'level2type' ]
    [ , [ @level2name = ] N'level2name' ]
[ ; ]

Arguments

[ @name = ] N’name'

Nom de la propriété à ajouter. @name est sysname, sans valeur par défaut et ne peut pas être NULL. Les noms peuvent inclure des chaînes de caractères vides ou non alphanumériques et des valeurs binaires.

[ @value = ] value

Valeur à associer à la propriété. @value est sql_variant, avec la valeur par défaut NULL. La taille de @value ne peut pas dépasser 7 500 octets.

[ @level0type = ] 'level0type'

Type d’objet de niveau 0. @level0type est varchar(128), avec la valeur par défaut NULL.

Les entrées valides sont :

  • ASSEMBLY
  • CONTRACT
  • EVENT NOTIFICATION
  • FILEGROUP
  • MESSAGE TYPE
  • PARTITION FUNCTION
  • PARTITION SCHEME
  • REMOTE SERVICE BINDING
  • ROUTE
  • SCHEMA
  • SERVICE
  • USER
  • TRIGGER
  • TYPE
  • PLAN GUIDE
  • NULL

Important

La possibilité de spécifier USER en tant que type de niveau 0 dans une propriété étendue d’un objet de type de niveau 1 sera supprimée dans une version ultérieure de SQL Server. Utilisez SCHEMA plutôt comme type de niveau 0. Par exemple, lorsque vous définissez une propriété étendue sur une table, spécifiez le schéma de la table au lieu d'un nom d'utilisateur. La possibilité de spécifier TYPE le type de niveau 0 sera supprimée dans une version ultérieure de SQL Server. Pour TYPE, utilisez SCHEMA le type level-0 et TYPE le type level-1.

[ @level0name = ] N’level0name'

Nom du type d’objet de niveau 0 spécifié. @level0name est sysname, avec la valeur par défaut NULL.

[ @level1type = ] 'level1type'

Type d’objet de niveau 1. @level1type est varchar(128), avec la valeur par défaut NULL.

Les entrées valides sont :

  • AGGREGATE
  • DEFAULT
  • FUNCTION
  • LOGICAL FILE NAME
  • PROCEDURE
  • QUEUE
  • RULE
  • SEQUENCE
  • SYNONYM
  • TABLE
  • TABLE_TYPE
  • TYPE
  • VIEW
  • XML SCHEMA COLLECTION
  • NULL

[ @level1name = ] N’level1name'

Nom du type d’objet de niveau 1 spécifié. @level1name est sysname, avec la valeur par défaut NULL.

[ @level2type = ] 'level2type'

Type d’objet de niveau 2. @level2type est varchar(128), avec la valeur par défaut NULL.

Les entrées valides sont :

  • COLUMN
  • CONSTRAINT
  • EVENT NOTIFICATION
  • INDEX
  • PARAMETER
  • TRIGGER
  • NULL

[ @level2name = ] N’level2name'

Nom du type d’objet de niveau 2 spécifié. @level2name est sysname, avec la valeur par défaut NULL.

Valeurs des codes de retour

0 (réussite) ou 1 (échec).

Notes

Lorsque vous spécifiez des propriétés étendues, les objets d’une base de données SQL Server sont classés en trois niveaux : 0, 1 et 2. Le niveau 0 est le plus élevé et est défini en tant qu'objets contenus dans l'étendue de la base de données. Les objets de niveau 1 figurent dans l'étendue du schéma ou de l'utilisateur tandis que les objets de niveau 2 se trouvent dans les objets de niveau 1. Vous pouvez définir des propriétés étendues pour les objets de tous ces niveaux.

Les références à un objet d'un niveau donné doivent être qualifiées par les noms des objets de niveau supérieur possédant ou contenant l'objet en question. Par exemple, lorsque vous ajoutez une propriété étendue à une colonne de table (niveau 2), vous devez également indiquer le nom de la table (niveau 1) qui contient la colonne et le schéma (niveau 0) qui contient la table.

Si tous les types et noms d'objet sont NULL, la propriété appartient à la base de données active.

Les propriétés étendues ne sont pas autorisées sur les objets système, les objets en dehors de l’étendue d’une base de données définie par l’utilisateur ou les objets non répertoriés dans Arguments comme entrées valides.

Les propriétés étendues ne sont pas autorisées sur les tables optimisées en mémoire.

Répliquer les propriétés étendues

Les propriétés étendues sont répliquées uniquement dans la synchronisation initiale entre le serveur de publication et l'Abonné. Si vous ajoutez ou modifiez une propriété étendue après la synchronisation initiale, la modification n’est pas répliquée. Pour plus d’informations sur la réplication des objets de base de données, consultez Publier des données et des objets de base de données.

Schéma et utilisateur

Nous vous déconseillons USER de spécifier un type de niveau 0 lorsque vous appliquez une propriété étendue à un objet de base de données, car cela peut entraîner une ambiguïté de résolution de noms. Par exemple, supposons que l’utilisateur Mary possède deux schémas (Mary et ) et MySchemaque ces schémas contiennent tous deux une table nommée MyTable. Si Mary ajoute une propriété étendue à la table MyTable et spécifie @level0type = 'USER', @level0name = N'Mary', il n’est pas clair à quelle table la propriété étendue est appliquée. Pour maintenir la compatibilité descendante, SQL Server applique la propriété à la table contenue dans le schéma nommé Mary.

Autorisations

Les membres des db_owner et db_ddladmin rôles de base de données fixes peuvent ajouter des propriétés étendues à n’importe quel objet à l’exception suivante : db_ddladmin ne peut pas ajouter de propriétés à la base de données elle-même, ni aux utilisateurs ou aux rôles.

Les utilisateurs peuvent ajouter des propriétés étendues à des objets qu'ils possèdent ou pour lesquels ils bénéficient d'autorisations ALTER ou CONTROL.

Exemples

R. Ajouter une propriété étendue à une base de données

L'exemple suivant ajoute la propriété intitulée Caption et ayant AdventureWorks2022 Sample OLTP Database pour valeur à la base de données exemple AdventureWorks2022 .

USE AdventureWorks2022;
GO

--Add a caption to the AdventureWorks2022 Database object itself.
EXEC sp_addextendedproperty @name = N'Caption',
    @value = 'AdventureWorks2022 Sample OLTP Database';

B. Ajouter une propriété étendue à une colonne d’une table

L'exemple suivant ajoute une propriété de légende à la colonne PostalCode dans la table Address.

USE AdventureWorks2022;
GO

EXEC sp_addextendedproperty @name = N'Caption',
    @value = 'Postal code is a required column.',
    @level0type = 'SCHEMA', @level0name = N'Person',
    @level1type = 'TABLE', @level1name = N'Address',
    @level2type = 'COLUMN', @level2name = N'PostalCode';
GO

C. Ajouter une propriété de masque d’entrée à une colonne

L’exemple suivant ajoute une propriété 99999 or 99999-9999 or #### ### de masque d’entrée à la colonne PostalCode de la table Address.

USE AdventureWorks2022;
GO

EXEC sp_addextendedproperty @name = N'Input Mask ',
    @value = '99999 or 99999-9999 or #### ###',
    @level0type = 'SCHEMA', @level0name = N'Person',
    @level1type = 'TABLE', @level1name = N'Address',
    @level2type = 'COLUMN', @level2name = N'PostalCode';
GO

D. Ajouter une propriété étendue à un groupe de fichiers

L'exemple suivant ajoute une propriété étendue au groupe de fichiers PRIMARY .

USE AdventureWorks2022;
GO

EXEC sys.sp_addextendedproperty @name = N'MS_DescriptionExample',
    @value = N'Primary filegroup for the AdventureWorks2022 sample database.',
    @level0type = 'FILEGROUP', @level0name = N'PRIMARY';
GO

E. Ajouter une propriété étendue à un schéma

L'exemple suivant ajoute une propriété étendue au schéma HumanResources .

USE AdventureWorks2022;
GO

EXEC sys.sp_addextendedproperty @name = N'MS_DescriptionExample',
    @value = N'Contains objects related to employees and departments.',
    @level0type = 'SCHEMA', @level0name = N'HumanResources';

F. Ajouter une propriété étendue à une table

L'exemple suivant ajoute une propriété étendue à la table Address du schéma Person .

USE AdventureWorks2022;
GO

EXEC sys.sp_addextendedproperty @name = N'MS_DescriptionExample',
    @value = N'Street address information for customers, employees, and vendors.',
    @level0type = 'SCHEMA', @level0name = N'Person',
    @level1type = 'TABLE', @level1name = N'Address';
GO

G. Ajouter une propriété étendue à un rôle

L'exemple suivant crée un rôle d'application et ajoute une propriété étendue à ce rôle.

USE AdventureWorks2022;
GO

CREATE APPLICATION ROLE Buyers
    WITH Password = '987G^bv876sPY)Y5m23';
GO

EXEC sys.sp_addextendedproperty @name = N'MS_Description',
    @value = N'Application Role for the Purchasing Department.',
    @level0type = 'USER', @level0name = N'Buyers';

H. Ajouter une propriété étendue à un type

L'exemple suivant ajoute une propriété étendue à un type.

USE AdventureWorks2022;
GO

EXEC sys.sp_addextendedproperty @name = N'MS_Description',
    @value = N'Data type (alias) to use for any column that represents an order number. For example a sales order number or purchase order number.',
    @level0type = 'SCHEMA', @level0name = N'dbo',
    @level1type = 'TYPE', @level1name = N'OrderNumber';

I. Ajouter une propriété étendue à un utilisateur

L'exemple suivant crée un utilisateur et ajoute une propriété étendue à cet utilisateur.

USE AdventureWorks2022;
GO

CREATE USER CustomApp WITHOUT LOGIN;
GO

EXEC sys.sp_addextendedproperty @name = N'MS_Description',
    @value = N'User for an application.',
    @level0type = 'USER', @level0name = N'CustomApp';