OBJECTPROPERTY (Transact-SQL)

Mis à jour : 12 décembre 2006

Retourne les informations concernant les objets étendus aux schémas de la base de données active. Pour obtenir la liste de tous les objets étendus aux schémas, consultez sys.objects (Transact-SQL). Cette fonction ne peut pas être utilisée pour les objets non étendus aux schémas, tels que les déclencheurs DDL et les notifications d'événements.

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

Syntaxe

OBJECTPROPERTY ( 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 représentant les informations devant être retournées pour l'objet spécifié par id. property peut prendre l'une des valeurs suivantes :

    ms176105.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 OBJECTPROPERTY, 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 suivante le contexte de la base de données active est la base de données master. Le moteur de base de données tentera de retourner la valeur de la propriété de l'object_id spécifié dans cette base de données et non dans la base de données spécifiée dans la requête. La requête renvoie des résultats incorrects car la vue vEmployee n'est pas dans la base de données master.

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

OBJECTPROPERTY (view_id, 'IsIndexable') peut utiliser un volume important de ressources système, 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 effective de l'index peut échouer si certaines conditions de clé d'index ne sont pas respectées. Pour plus d'informations, consultez CREATE INDEX (Transact-SQL).

OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex') retourne 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.

Lors de la création d'une table, l'option QUOTED IDENTIFIER est toujours stockée avec la valeur ON dans les métadonnées de la table, même si elle a la valeur OFF au moment de sa création. Donc, OBJECTPROPERTY(table_id, 'IsQuotedIdentOn') retourne toujours une valeur 1 (true).

Types des valeurs renvoyées

int

Exemples

A. Vérification qu'un objet est une table

L'exemple suivant teste si UnitMeasure est une table dans la base de données AdventureWorks.

USE AdventureWorks;
GO
IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 1
   PRINT 'UnitMeasure is a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 0
   PRINT 'UnitMeasure is not a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') IS NULL
   PRINT 'ERROR: UnitMeasure is not a valid object.';
GO

B. Vérification du déterminisme d'une fonction définie par l'utilisateur à valeur scalaire

L'exemple suivant teste si la fonction ufnGetProductDealerPrice (à valeur scalaire et définie par l'utilisateur), qui renvoie une valeur money, est déterministe.

USE AdventureWorks;
GO
SELECT OBJECTPROPERTY(OBJECT_ID('dbo.ufnGetProductDealerPrice'), 'IsDeterministic');
GO

Le jeu de résultats révèle que ufnGetProductDealerPrice n'est pas une fonction déterministe.

-----
0

C. Recherche des objets appartenant à un schéma spécifique

L'exemple suivant utilise la propriété SchemaId pour retourner tous les objets qui appartiennent au schéma Production.

USE AdventureWorks;
GO
SELECT name, object_id, type_desc
FROM sys.objects 
WHERE OBJECTPROPERTY(object_id, N'SchemaId') = SCHEMA_ID(N'Production')
ORDER BY type_desc, name;
GO

Voir aussi

Référence

COLUMNPROPERTY (Transact-SQL)
Fonctions de métadonnées (Transact-SQL)
OBJECTPROPERTYEX (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
TYPEPROPERTY (Transact-SQL)
sys.objects (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é.