OBJECTPROPERTY (Transact-SQL)
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.
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 :[!REMARQUE]
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é
Type d'objet
Description et valeurs renvoyées
CnstIsClustKey
Contrainte
Contrainte PRIMARY KEY avec un index cluster.
1 = Vrai
0 = Faux
CnstIsColumn
Contrainte
Contrainte CHECK, DEFAULT ou FOREIGN KEY sur une colonne unique.
1 = Vrai
0 = Faux
CnstIsDeleteCascade
Contrainte
Une contrainte FOREIGN KEY avec l'option ON DELETE CASCADE.
1 = Vrai
0 = Faux
CnstIsDisabled
Contrainte
Contrainte désactivée.
1 = Vrai
0 = Faux
CnstIsNonclustKey
Contrainte
Contrainte PRIMARY KEY ou UNIQUE avec index non-cluster.
1 = Vrai
0 = Faux
CnstIsNotRepl
Contrainte
La contrainte est définie avec les mots clés NOT FOR REPLICATION.
1 = Vrai
0 = Faux
CnstIsNotTrusted
Contrainte
La contrainte a été activée sans vérifier les lignes existantes. Elle peut ne pas s'appliquer à toutes les lignes.
1 = Vrai
0 = Faux
CnstIsUpdateCascade
Contrainte
Une contrainte FOREIGN KEY avec l'option ON UPDATE CASCADE.
1 = Vrai
0 = Faux
ExecIsAfterTrigger
Déclencheur
Déclencheur AFTER.
1 = Vrai
0 = Faux
ExecIsAnsiNullsOn
Fonction Transact-SQL, procédure Transact-SQL, déclencheur Transact-SQL, vue
Définition de valeurs ANSI NULL lors de la création.
1 = Vrai
0 = Faux
ExecIsDeleteTrigger
Déclencheur
Déclencheur DELETE
1 = Vrai
0 = Faux
ExecIsFirstDeleteTrigger
Déclencheur
Premier déclencheur activé lorsqu'une instruction DELETE est exécutée sur la table.
1 = Vrai
0 = Faux
ExecIsFirstInsertTrigger
Déclencheur
Premier déclencheur activé lorsqu'une instruction INSERT est exécutée sur la table.
1 = Vrai
0 = Faux
ExecIsFirstUpdateTrigger
Déclencheur
Premier déclencheur activé lorsqu'une instruction UPDATE est exécutée sur la table.
1 = Vrai
0 = Faux
ExecIsInsertTrigger
Déclencheur
Déclencheur INSERT
1 = Vrai
0 = Faux
ExecIsInsteadOfTrigger
Déclencheur
Déclencheur INSTEAD OF.
1 = Vrai
0 = Faux
ExecIsLastDeleteTrigger
Déclencheur
Dernier déclencheur activé lorsqu'une instruction DELETE est exécutée sur la table.
1 = Vrai
0 = Faux
ExecIsLastInsertTrigger
Déclencheur
Dernier déclencheur activé lorsqu'une instruction INSERT est exécutée sur la table.
1 = Vrai
0 = Faux
ExecIsLastUpdateTrigger
Déclencheur
Dernier déclencheur activé lorsqu'une instruction UPDATE est exécutée sur la table.
1 = Vrai
0 = Faux
ExecIsQuotedIdentOn
Fonction Transact-SQL, procédure Transact-SQL, déclencheur Transact-SQL, vue
Définition de QUOTED_IDENTIFIER lors de la création.
1 = Vrai
0 = Faux
ExecIsStartup
Procédure
Procédure de démarrage.
1 = Vrai
0 = Faux
ExecIsTriggerDisabled
Déclencheur
Déclencheur désactivé.
1 = Vrai
0 = Faux
ExecIsTriggerNotForRepl
Déclencheur
Déclencheur défini comme NOT FOR REPLICATION.
1 = Vrai
0 = Faux
ExecIsUpdateTrigger
Déclencheur
Déclencheur UPDATE.
1 = Vrai
0 = Faux
HasAfterTrigger
Table, vue
La table ou la vue comporte un déclencheur AFTER.
1 = Vrai
0 = Faux
HasDeleteTrigger
Table, vue
La table ou la vue comporte un déclencheur DELETE.
1 = Vrai
0 = Faux
HasInsertTrigger
Table, vue
La table ou la vue comporte un déclencheur INSERT.
1 = Vrai
0 = Faux
HasInsteadOfTrigger
Table, vue
La table ou la vue comporte un déclencheur INSTEAD OF.
1 = Vrai
0 = Faux
HasUpdateTrigger
Table, vue
La table ou la vue comporte un déclencheur UPDATE.
1 = Vrai
0 = Faux
IsAnsiNullsOn
Fonction Transact-SQL, procédure Transact-SQL, table, déclencheur Transact-SQL, vue
Spécifie que le paramètre d'option ANSI NULLS de la table a la valeur ON. Cela signifie que toutes les comparaisons avec une valeur nulle produisent la valeur UNKNOWN. Ce paramètre s'applique à l'ensemble des expressions dans la définition de la table, y compris les colonnes et les contraintes calculées, à condition que la table existe.
1 = Vrai
0 = Faux
IsCheckCnst
Tout objet étendu aux schémas
Contrainte CHECK
1 = Vrai
0 = Faux
IsConstraint
Tout objet étendu aux schémas
Contrainte CHECK, DEFAULT ou FOREIGN KEY à une seule colonne sur une colonne ou une table.
1 = Vrai
0 = Faux
IsDefault
Tout objet étendu aux schémas
Valeur par défaut associée.
1 = Vrai
0 = Faux
IsDefaultCnst
Tout objet étendu aux schémas
Contrainte DEFAULT.
1 = Vrai
0 = Faux
IsDeterministic
Fonction, vue
Propriété de déterminisme de la fonction ou de la vue.
1 = Déterministe
0 = Non déterministe
IsEncrypted
Fonction Transact-SQL, procédure Transact-SQL, table, déclencheur Transact-SQL, vue
Indique que le texte d'origine provenant de l'instruction du module a été converti dans un format d'obfuscation. La sortie générée par l'obfuscation n'est pas visible directement dans les affichages catalogue de SQL Server 2005. Les utilisateurs n'ayant pas accès aux tables système ou aux fichiers de base de données ne peuvent pas récupérer le texte d'obfuscation. Le texte est cependant à la disposition des utilisateurs qui peuvent accéder aux tables système via le port DAC ou accéder directement aux fichiers de bases de données. Les utilisateurs qui peuvent associer un débogueur au processus serveur peuvent également récupérer la procédure d'origine de la mémoire au moment de l'exécution.
1 = Chiffré
0 = Non chiffré
Type de données de base : int
IsExecuted
Tout objet étendu aux schémas
Objet pouvant être exécuté (vue, procédure, fonction ou déclencheur).
1 = Vrai
0 = Faux
IsExtendedProc
Tout objet étendu aux schémas
Procédure étendue.
1 = Vrai
0 = Faux
IsForeignKey
Tout objet étendu aux schémas
Contrainte FOREIGN KEY.
1 = Vrai
0 = Faux
IsIndexed
Table, vue
Table ou vue comportant un index.
1 = Vrai
0 = Faux
IsIndexable
Table, vue
Table ou vue pour laquelle un index peut être créé.
1 = Vrai
0 = Faux
IsInlineFunction
Fonction
Fonction Inline.
1 = Fonction Inline
0 = Fonction non inline
IsMSShipped
Tout objet étendu aux schémas
Objet créé durant l'installation de SQL Server.
1 = Vrai
0 = Faux
IsPrimaryKey
Tout objet étendu aux schémas
Contrainte PRIMARY KEY.
1 = Vrai
0 = Faux
NULL = N'est pas une fonction, ou identificateur de l'objet non valide.
IsProcedure
Tout objet étendu aux schémas
Procédure.
1 = Vrai
0 = Faux
IsQuotedIdentOn
Fonction Transact-SQL, procédure Transact-SQL, table, déclencheur Transact-SQL, vue, contrainte CHECK, définition DEFAULT
Spécifie que le paramètre d'identificateur entre guillemets pour l'objet est ON. Cela signifie que des guillemets doubles délimitent les identificateurs dans toutes les expressions impliquées dans la définition de l'objet.
1 = ON
0 = OFF
IsQueue
Tout objet étendu aux schémas
File d'attente Service Broker.
1 = Vrai
0 = Faux
IsReplProc
Tout objet étendu aux schémas
Procédure de réplication.
1 = Vrai
0 = Faux
IsRule
Tout objet étendu aux schémas
Règle associée.
1 = Vrai
0 = Faux
IsScalarFunction
Fonction
Fonction à valeur scalaire.
1 = Fonction scalaire
0 = Fonction non scalaire
IsSchemaBound
Fonction, vue
Fonction ou vue liée à un schéma, créée à l'aide de SCHEMABINDING.
1 = Liée à un schéma
0 = Non liée à un schéma
IsSystemTable
Table
Table système.
1 = Vrai
0 = Faux
IsTable
Table
Table.
1 = Vrai
0 = Faux
IsTableFunction
Fonction
Fonction évaluée dans une table.
1 = Fonction table
0 = Fonction non-table
IsTrigger
Tout objet étendu aux schémas
Déclencheur.
1 = Vrai
0 = Faux
IsUniqueCnst
Tout objet étendu aux schémas
Contrainte UNIQUE.
1 = Vrai
0 = Faux
IsUserTable
Table
Table définie par l'utilisateur.
1 = Vrai
0 = Faux
IsView
Vue
Vue.
1 = Vrai
0 = Faux
OwnerId
Tout objet étendu aux schémas
Propriétaire de l'objet.
RemarqueLe propriétaire du schéma n'est pas nécessairement le propriétaire de l'objet. Par exemple, les objets enfants (ceux où parent_object_id est non NULL) retournent toujours le même ID de propriétaire que leur parent.Non NULL = ID utilisateur de base de données du propriétaire de l'objet.
TableDeleteTrigger
Table
La table comporte un déclencheur DELETE.
>1 = ID du premier déclencheur du type donné.
TableDeleteTriggerCount
Table
La table comporte le nombre de déclencheurs DELETE spécifié.
>0 = Nombre de déclencheurs DELETE.
TableFullTextMergeStatus
Table
Indique s'il s'agit d'une table qui a un index de recherche en texte intégral qui est en cours de fusion.
0 = La table n'a pas d'index de recherche en texte intégral ou l'index de recherche en texte intégral n'est pas en cours de fusion.
1 = L'index de recherche en texte intégral est en cours de fusion.
TableFullTextBackgroundUpdateIndexOn
Table
Un index de mise à jour d'arrière-plan de texte intégral est activé (suivi des modifications automatiques) pour la table.
1 = VRAI
0 = FALSE
TableFulltextCatalogId
Table
ID du catalogue de texte intégral dans lequel résident les données d'indexation de texte intégral de la table.
Différent de zéro= ID de catalogue de texte intégral associé à l'index unique qui identifie les lignes dans une table indexée en texte intégral.
0 = Table sans index de texte intégral.
TableFulltextChangeTrackingOn
Table
Le suivi des modifications de texte intégral est activé pour la table.
1 = VRAI
0 = FALSE
TableFulltextDocsProcessed
Table
Nombre de lignes traitées depuis le démarrage de l'indexation de texte intégral. Dans une table indexée pour la recherche en texte intégral, toutes les colonnes d'une ligne sont considérées comme faisant partir d'un document à indexer.
0 = Aucune analyse active ou l'indexation de texte intégral est terminée.
> 0 = Un des éléments suivants :
Nombre de documents traités par des opérations d'insertion ou de mise à jour depuis le début d'une modification de remplissage intégral, incrémentiel ou manuel.
Nombre de lignes traitées par des opérations d'insertion ou de mise à jour depuis l'activation de la modification du remplissage avec mise à jour de l'index en arrière-plan, depuis la modification du schéma d'index en texte intégral, depuis la reconstruction du catalogue de texte intégral, depuis que l'instance de SQL Server a redémarré, etc.
NULL = Table sans index de texte intégral.
RemarqueCette propriété ne contrôle pas et ne compte pas les lignes supprimées.TableFulltextFailCount
Table
Nombre de lignes que la recherche en texte intégral n'a pas indexées.
0 = Remplissage terminé.
> 0 = Un des éléments suivants :
Le nombre de documents n'ayant pas été indexés depuis le démarrage du remplissage du suivi des modifications de la mise à jour complète, incrémentielle ou manuelle.
Pour le suivi des modifications avec l'index de mise à jour d'arrière-plan, le nombre de lignes n'ayant pas été indexées depuis le démarrage ou le redémarrage du remplissage. Cela peut être causé par une modification du schéma, une reconstruction du catalogue, un redémarrage du serveur, etc.
NULL = Table sans index de texte intégral.
TableFulltextItemCount
Table
Nombre de lignes dont l'indexation de texte intégral a réussi.
TableFulltextKeyColumn
Table
ID de la colonne associée à l'index de colonne unique qui fait partie de la définition de l'indexation de texte intégral.
0 = Table sans index de texte intégral.
TableFulltextPendingChanges
Table
Nombre d'entrées de suivi des modifications en attente à traiter.
0 = Suivi des modifications non activé.
NULL = Table sans index de texte intégral.
TableFulltextPopulateStatus
Table
0 = Inactif.
1 = Remplissage complet en cours.
2 = Remplissage incrémentiel en cours.
3 = Propagation du suivi des modifications en cours.
4 = Index de mise à jour d'arrière-plan en cours, tel que le suivi des modifications automatiques.
5 = L'indexation de texte intégral est accélérée ou en pause.
TableHasActiveFulltextIndex
Table
La table dispose d'un index de texte intégral actif.
1 = Vrai
0 = Faux
TableHasCheckCnst
Table
La table comporte une contrainte CHECK.
1 = Vrai
0 = Faux
TableHasClustIndex
Table
La table comporte un index cluster.
1 = Vrai
0 = Faux
TableHasDefaultCnst
Table
La table comporte une contrainte DEFAULT.
1 = Vrai
0 = Faux
TableHasDeleteTrigger
Table
La table comporte un déclencheur DELETE.
1 = Vrai
0 = Faux
TableHasForeignKey
Table
La table comporte une contrainte FOREIGN KEY.
1 = Vrai
0 = Faux
TableHasForeignRef
Table
La table est référencée par une contrainte FOREIGN KEY.
1 = Vrai
0 = Faux
TableHasIdentity
Table
La table comporte une colonne identité.
1 = Vrai
0 = Faux
TableHasIndex
Table
La table comporte un index de type non défini.
1 = Vrai
0 = Faux
TableHasInsertTrigger
Table
L'objet comporte un déclencheur INSERT.
1 = Vrai
0 = Faux
TableHasNonclustIndex
Table
La table comporte un index non-cluster.
1 = Vrai
0 = Faux
TableHasPrimaryKey
Table
La table comporte une clé primaire
1 = Vrai
0 = Faux
TableHasRowGuidCol
Table
La table comporte un ROWGUIDCOL pour une colonne uniqueidentifier.
1 = Vrai
0 = Faux
TableHasTextImage
Table
La table comporte une colonne text, ntext ou image.
1 = Vrai
0 = Faux
TableHasTimestamp
Table
La table comporte une colonne timestamp.
1 = Vrai
0 = Faux
TableHasUniqueCnst
Table
La table comporte une contrainte UNIQUE.
1 = Vrai
0 = Faux
TableHasUpdateTrigger
Table
L'objet comporte un déclencheur UPDATE.
1 = Vrai
0 = Faux
TableHasVarDecimalStorageFormat
Table
La table est activée pour le format de stockage vardecimal.
1 = True
0 = False
TableInsertTrigger
Table
La table comporte un déclencheur INSERT.
>1 = ID du premier déclencheur du type donné.
TableInsertTriggerCount
Table
La table comporte le nombre de déclencheurs INSERT spécifié.
>0 = Nombre de déclencheurs INSERT.
TableIsFake
Table
La table n'est pas réelle. Elle est matérialisée en interne sur demande par le Moteur de base de données SQL Server.
1 = Vrai
0 = Faux
TableIsLockedOnBulkLoad
Table
La table est verrouillée à cause d'un travail bcp ou BULK INSERT.
1 = Vrai
0 = Faux
TableIsPinned
Table
La table est attachée pour être conservée dans le cache de données.
0 = Faux
Cette fonctionnalité n'est pas prise en charge par SQL Server 2005 et versions ultérieures
TableTextInRowLimit
Table
Nombre maximal d'octets autorisé pour text in row.
0 si l'option text in row n'est pas définie.
TableUpdateTrigger
Table
La table comporte un déclencheur UPDATE.
>1 = ID du premier déclencheur du type donné.
TableUpdateTriggerCount
Table
La table comporte le nombre de déclencheurs UPDATE spécifié.
> 0 = Nombre de déclencheurs UPDATE.
TableHasColumnSet
Table
La table comporte un jeu de colonnes.
0 = Faux
1 = Vrai
Pour plus d'informations, consultez Utilisation de jeux de colonnes.
Types des valeurs renvoyées
int
Exceptions
Retourne la valeur NULL en cas d'erreur ou si un appelant n'est pas autorisé à afficher l'objet.
Un utilisateur peut voir uniquement les métadonnées des éléments sécurisables qui lui appartiennent ou pour lesquels il dispose d'une autorisation. 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).
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