sp_addextendedproperty (Transact-SQL)
S’applique à : SQL ServerAzure SQL Database Azure 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 MySchema
que 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';