OBJECTPROPERTYEX (Transact-SQL)

Mis à jour : 12 décembre 2006

Renvoie des informations concernant les objets étendus aux schémas dans la base de données actuelle. Pour obtenir la liste de ces objets, consultez sys.objects (Transact-SQL). OBJECTPROPERTYEX ne peut pas être utilisé pour des objets qui ne sont pas étendus aux schémas, tels que les déclencheurs DDL (Data Definition Language) et les notifications d'événements.

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

Syntaxe

OBJECTPROPERTYEX ( id , property )

Arguments

  • id
    Expression représentant l'ID de l'objet dans la base de données active. id est de type int et est considéré comme un objet étendu aux schémas dans le contexte de la base de données active.
  • property
    Expression contenant les informations à renvoyer pour l'objet spécifié par id. Le type renvoyé est sql_variant. Le tableau qui suit indique le type de données de base pour chaque valeur de propriété.

    ms188390.note(fr-fr,SQL.90).gifRemarque :
    Sauf indication contraire, NULL est retourné lorsque property n'est pas un nom de propriété valide, lorsque id n'est pas un ID d'objet valide, lorsque id est un type d'objet non pris en charge pour la valeur spécifiée de property, ou lorsque l'appelant n'est pas autorisé à consulter les métadonnées de l'objet.

    Nom de la propriété

Exceptions

Retourne la valeur NULL en cas d'erreur ou si un appelant n'est pas autorisé à afficher l'objet.

Dans SQL Server 2005, un utilisateur peut voir uniquement les métadonnées des éléments sécurisables qui lui appartiennent ou pour lesquels il dispose d'un droit d'accès. Cela signifie que les fonctions intégrées générant des métadonnées, telles que OBJECTPROPERTYEX, peuvent retourner la valeur NULL si l'utilisateur ne dispose d'aucune autorisation sur l'objet. Pour plus d'informations, consultez Configuration de la visibilité des métadonnées et Dépannage de la visibilité des métadonnées.

Notes

Le moteur de base de données considère que object_id se situe dans le contexte de la base de données active. Une requête référençant un object_id dans une autre base de données renverra NULL ou des résultats incorrects. Par exemple, dans la requête qui suit, le contexte de base de données actuel est la base de données master. Le moteur de base de données va tenter de renvoyer la valeur de propriété de l'identificateur object_id spécifié dans cette base de données et non pas dans la base de données indiquée dans la requête. La requête renvoie des résultats incorrects parce que la vue vEmployee ne se trouve pas dans la base de données master.

USE master;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'AdventureWorks.HumanResources.vEmployee'), 'IsView');
GO

OBJECTPROPERTY(view_id**,'IsIndexable'**) peut consommer des ressources système importantes car l'évaluation de la propriété IsIndexable nécessite l'analyse de la définition de la vue, sa normalisation et son optimisation partielle. Bien que la propriété IsIndexable identifie les tables ou les vues qui peuvent être indexées, la création réelle de l'index peut malgré tout échouer si certaines conditions de clé d'index ne sont pas remplies. Pour plus d'informations, consultez CREATE INDEX (Transact-SQL).

OBJECTPROPERTY (table_id**,'TableHasActiveFulltextIndex'**) renvoie la valeur 1 (true) lorsqu'au moins une colonne d'une table est ajoutée pour l'indexation. L'indexation de texte intégral est activée au niveau du remplissage dès l'ajout de la première colonne à indexer.

Des restrictions sur la visibilité des métadonnées sont appliquées à l'ensemble de résultats. Pour plus d'informations, consultez Configuration de la visibilité des métadonnées.

Types des valeurs renvoyées

sql_variant

Exemples

A. Recherche du type de base d'un objet

L'exemple qui suit crée un SYNONYM MyEmployeeTable pour la table Employee de la base de données AdventureWorks, puis renvoie le type de base du SYNONYM.

USE AdventureWorks;
GO
CREATE SYNONYM MyEmployeeTable FOR HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX ( object_id(N'MyEmployeeTable'), N'BaseType')AS [Base Type];
GO

L'ensemble de résultats montre que le type de base de l'objet sous-jacent, la table Employee, est une table utilisateur.

Base Type 
-------- 
U 

B. Renvoi d'une valeur de propriété

L'exemple suivant renvoie le nombre de déclencheurs UPDATE sur la table spécifiée.

USE AdventureWorks;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID(N'HumanResources.Employee'), N'TABLEUPDATETRIGGERCOUNT');
GO

C. Recherche de tables comportant une contrainte FOREIGN KEY

L'exemple suivant utilise la propriété TableHasForeignKey pour retourner toutes les tables comportant une contrainte FOREIGN KEY.

USE AdventureWorks;
GO
SELECT name, object_id, schema_id, type_desc
FROM sys.objects 
WHERE OBJECTPROPERTYEX(object_id, N'TableHasForeignKey') = 1
ORDER BY name;
GO

Voir aussi

Référence

CREATE SYNONYM (Transact-SQL)
Fonctions de métadonnées (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)
OBJECT_NAME (Transact-SQL)
sys.objects (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (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

12 décembre 2006

Nouveau contenu :
  • Ajout de la propriété TableHasVarDecimalStorageFormat, disponible dans le Service Pack 2.

17 juillet 2006

Nouveau contenu :
  • Ajout de la section Exceptions.

5 décembre 2005

Contenu modifié :
  • La définition des propriétés IsTableFunction et IsScalarFunction a été corrigée.
  • L'exemple C a été modifié.