OBJECTPROPERTYEX (Transact-SQL)
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.
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é.[!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
BaseType
Tout objet étendu aux schémas
Identifie le type de base de l'objet. Lorsque l'objet spécifié est un SYNONYM, le type de base de l'objet sous-jacent est renvoyé.
Nonnull = Type d'objet.
Type de données de base : char(2)
CnstIsClustKey
Contrainte
Contrainte PRIMARY KEY avec un index cluster.
1 = Vrai
0 = Faux
Type de données de base : int
CnstIsColumn
Contrainte
Contrainte CHECK, DEFAULT ou FOREIGN KEY sur une seule colonne.
1 = Vrai
0 = Faux
Type de données de base : int
CnstIsDeleteCascade
Contrainte
Contrainte FOREIGN KEY avec l'option ON DELETE CASCADE.
1 = Vrai
0 = Faux
Type de données de base : int
CnstIsDisabled
Contrainte
Contrainte désactivée
1 = Vrai
0 = Faux
Type de données de base : int
CnstIsNonclustKey
Contrainte
Contrainte PRIMARY KEY avec un index non-cluster.
1 = Vrai
0 = Faux
Type de données de base : int
CnstIsNotRepl
Contrainte
La contrainte est définie avec les mots clés NOT FOR REPLICATION.
1 = Vrai
0 = Faux
Type de données de base : int
CnstIsNotTrusted
Contrainte
La contrainte a été activée sans vérification des lignes existantes. Il se peut donc qu'elle ne s'applique pas à toutes les lignes.
1 = Vrai
0 = Faux
Type de données de base : int
CnstIsUpdateCascade
Contrainte
Contrainte FOREIGN KEY avec l'option ON UPDATE CASCADE.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsAfterTrigger
Déclencheur
Déclencheur AFTER.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsAnsiNullsOn
Fonction Transact-SQL, procédure Transact-SQL, déclencheur Transact-SQL, vue
Définition des valeurs ANSI NULL lors de la création.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsDeleteTrigger
Déclencheur
Déclencheur DELETE.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsFirstDeleteTrigger
Déclencheur
Premier déclencheur exécuté lorsqu'une instruction DELETE est exécutée sur la table.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsFirstInsertTrigger
Déclencheur
Premier déclencheur exécuté lorsqu'une instruction INSERT est exécutée sur la table.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsFirstUpdateTrigger
Déclencheur
Premier déclencheur exécuté lorsqu'une instruction UPDATE est exécutée sur la table.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsInsertTrigger
Déclencheur
Déclencheur INSERT.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsInsteadOfTrigger
Déclencheur
Déclencheur INSTEAD OF.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsLastDeleteTrigger
Déclencheur
Dernier déclencheur exécuté lorsqu'une instruction DELETE est exécutée sur la table.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsLastInsertTrigger
Déclencheur
Dernier déclencheur exécuté lorsqu'une instruction INSERT est exécutée sur la table.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsLastUpdateTrigger
Déclencheur
Dernier déclencheur exécuté lorsqu'une instruction UPDATE est exécutée sur la table.
1 = Vrai
0 = Faux
Type de données de base : int
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
Type de données de base : int
ExecIsStartup
Procédure
Procédure de démarrage.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsTriggerDisabled
Déclencheur
Déclencheur désactivé.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsTriggerNotForRepl
Déclencheur
Déclencheur défini comme NOT FOR REPLICATION.
1 = Vrai
0 = Faux
Type de données de base : int
ExecIsUpdateTrigger
Déclencheur
Déclencheur UPDATE.
1 = Vrai
0 = Faux
Type de données de base : int
HasAfterTrigger
Table, vue
La table ou la vue comporte un déclencheur AFTER.
1 = Vrai
0 = Faux
Type de données de base : int
HasDeleteTrigger
Table, vue
La table ou la vue comporte un déclencheur DELETE.
1 = Vrai
0 = Faux
Type de données de base : int
HasInsertTrigger
Table, vue
La table ou la vue comporte un déclencheur INSERT.
1 = Vrai
0 = Faux
Type de données de base : int
HasInsteadOfTrigger
Table, vue
La table ou la vue comporte un déclencheur INSTEAD OF.
1 = Vrai
0 = Faux
Type de données de base : int
HasUpdateTrigger
Table, vue
La table ou la vue comporte un déclencheur UPDATE.
1 = Vrai
0 = Faux
Type de données de base : int
IsAnsiNullsOn
Fonction Transact-SQL, procédure Transact-SQL, table, déclencheur Transact-SQL, vue
Spécifie que l'option ANSI NULLS de la table a la valeur ON. Toutes les comparaisons avec une valeur null 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, aussi longtemps que la table existe.
1 = Vrai
0 = Faux
Type de données de base : int
IsCheckCnst
Tout objet étendu aux schémas
Contrainte CHECK.
1 = Vrai
0 = Faux
Type de données de base : int
IsConstraint
Tout objet étendu aux schémas.
Contrainte
1 = Vrai
0 = Faux
Type de données de base : int
IsDefault
Tout objet étendu aux schémas.
Valeur par défaut associée.
1 = Vrai
0 = Faux
Type de données de base : int
IsDefaultCnst
Tout objet étendu aux schémas
Contrainte DEFAULT.
1 = Vrai
0 = Faux
Type de données de base : int
IsDeterministic
Fonctions scalaires et fonctions table, vue
Propriété de déterminisme de la fonction ou de la vue.
1 = Déterministe
0 = Non déterministe
Type de données de base : int
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
Spécifie quel objet peut être exécuté (vue, procédure, fonction ou déclencheur).
1 = Vrai
0 = Faux
Type de données de base : int
IsExtendedProc
Tout objet étendu aux schémas
Procédure étendue.
1 = Vrai
0 = Faux
Type de données de base : int
IsForeignKey
Tout objet étendu aux schémas
Contrainte FOREIGN KEY.
1 = Vrai
0 = Faux
Type de données de base : int
IsIndexed
Table, vue
Table ou vue comportant un index.
1 = Vrai
0 = Faux
Type de données de base : int
IsIndexable
Table, vue
Table ou vue dans laquelle un index peut être créé.
1 = Vrai
0 = Faux
Type de données de base : int
IsInlineFunction
Fonction
Fonction Inline.
1 = Fonction Inline
0 = Fonction non Inline
Type de données de base : int
IsMSShipped
Tout objet étendu aux schémas
Objet créé durant l'installation de SQL Server.
1 = Vrai
0 = Faux
Type de données de base : int
IsPrecise
Colonne calculée, fonction, type défini par l'utilisateur, vue
Indique si l'objet contient un calcul imprécis, tel que des opérations en virgule flottante.
1 = Précis
0 = Imprécis
Type de données de base : int
IsPrimaryKey
Tout objet étendu aux schémas
Contrainte PRIMARY KEY.
1 = Vrai
0 = Faux
Type de données de base : int
IsProcedure
Tout objet étendu aux schémas
Procédure.
1 = Vrai
0 = Faux
Type de données de base : int
IsQuotedIdentOn
Contrainte CHECK, définition DEFAULT, fonction Transact-SQL, procédure Transact-SQL, table, déclencheur Transact-SQL, vue
Spécifie que le paramètre d'identification entre guillemets des objets a la valeur ON. Les guillemets doubles délimitent les identificateurs dans toutes les expressions impliquées dans la définition de l'objet.
1 = Vrai
0 = Faux
Type de données de base : int
IsQueue
Tout objet étendu aux schémas
File d'attente Service Broker
1 = Vrai
0 = Faux
Type de données de base : int
IsReplProc
Tout objet étendu aux schémas.
Procédure de réplication.
1 = Vrai
0 = Faux
Type de données de base : int
IsRule
Tout objet étendu aux schémas
Règle associée.
1 = Vrai
0 = Faux
Type de données de base : int
IsScalarFunction
Fonction
Fonction à valeur scalaire.
1 = Fonction scalaire
0 = Fonction non scalaire
Type de données de base : int
IsSchemaBound
Fonction, vue
Fonction ou vue liée à un schéma, créée à l'aide de SCHEMABINDING.
1 = Fonction liée à un schéma
0 = Fonction non liée à un schéma
Type de données de base : int
IsSystemTable
Table
Table système.
1 = Vrai
0 = Faux
Type de données de base : int
IsSystemVerified
Colonne calculée, fonction, type défini par l'utilisateur, vue
Les propriétés de précision et de déterminisme de l'objet peuvent être vérifiées par SQL Server.
1 = Vrai
0 = Faux
Type de données de base : int
IsTable
Table
Table.
1 = Vrai
0 = Faux
Type de données de base : int
IsTableFunction
Fonction
Fonction table.
1 = Fonction table
0 = Fonction non-table
Type de données de base : int
IsTrigger
Tout objet étendu aux schémas
Déclencheur
1 = Vrai
0 = Faux
Type de données de base : int
IsUniqueCnst
Tout objet étendu aux schémas
Contrainte UNIQUE.
1 = Vrai
0 = Faux
Type de données de base : int
IsUserTable
Table
Table définie par l'utilisateur.
1 = Vrai
0 = Faux
Type de données de base : int
IsView
Vue
Vue.
1 = Vrai
0 = Faux
Type de données de base : int
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) renvoient toujours le même ID de propriétaire que leur parent.Nonnull = ID d'utilisateur de base de données du propriétaire de l'objet.
NULL = Type d'objet non pris en charge, ou ID d'objet non valide.
Type de données de base : int
SchemaId
Tout objet étendu aux schémas
ID du schéma associé à l'objet.
Nonnull = ID de schéma de l'objet.
Type de données de base : int
SystemDataAccess
Fonction, vue
L'objet accède aux données système, aux catalogues système ou aux tables système virtuelles, dans l'instance locale de SQL Server.
0 = Aucune
1 = Lecture
Type de données de base : int
TableDeleteTrigger
Table
La table comporte un déclencheur DELETE.
>1 = ID du premier déclencheur du type spécifié.
Type de données de base : int
TableDeleteTriggerCount
Table
La table comporte le nombre de déclencheurs DELETE spécifié.
Nonnull = Nombre de déclencheurs DELETE
Type de données de base : int
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
L'index de mise à jour d'arrière-plan en texte intégral (suivi des modifications automatiques) est activé pour la table.
1 = VRAI
0 = FAUX
Type de données de base : int
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 = La table n'est pas indexée en texte intégral.
Type de données de base : int
TableFullTextChangeTrackingOn
Table
Le suivi des modifications de texte intégral est activé pour la table.
1 = VRAI
0 = FAUX
Type de données de base : int
TableFulltextDocsProcessed
Table
Nombre de lignes traitées depuis le démarrage de l'indexation en texte intégral. Dans une table en cours d'indexation pour une recherche en texte intégral, toutes les colonnes d'une ligne sont considérées comme faisant partie d'un même document à indexer.
0 = Aucune analyse ou indexation en texte intégral active n'est terminée.
> 0 = l'une des possibilités suivantes :
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 = La table n'est pas indexée en texte intégral.
Type de données de base : int
Remarque Cette 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 = Le remplissage est terminé.
>0 = L'une des possibilités suivantes :
Nombre de documents qui n'ont pas été indexés depuis le début d'une mise à jour du remplissage intégral, incrémentiel ou manuel.
Pour le suivi des modifications avec mise à jour de l'index en arrière-plan, nombre de lignes qui n'ont pas été indexées depuis le début du remplissage, ou depuis le redémarrage du remplissage. Ceci peut être provoqué par une modification du schéma, la reconstruction du catalogue, le redémarrage du serveur, etc.
NULL = La table n'est pas indexée en texte intégral.
Type de données de base : int
TableFulltextItemCount
Table
Nonnull = Nombre de lignes qui ont été correctement indexées en texte intégral.
NULL = La table n'est pas indexée en texte intégral.
Type de données de base : int
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 = La table n'est pas indexée en texte intégral.
Type de données de base : int
TableFulltextPendingChanges
Table
Nombre d'entrées de suivi des modifications en attente de traitement.
0 = Le suivi des modifications n'est pas activé.
NULL = La table n'est pas indexée en texte intégral.
Type de données de base : int
TableFulltextPopulateStatus
Table
0 = Inactif.
1 = Remplissage complet en cours.
2 = Remplissage incrémentiel en cours.
3 = Propagation des changements suivis en cours.
4 = Mise à jour de l'index en arrière-plan en cours, par exemple le suivi des modifications automatiques.
5 = Indexation en texte intégral accélérée ou suspendue.
Type de données de base : int
TableHasActiveFulltextIndex
Table
La table dispose d'un index de texte intégral actif.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasCheckCnst
Table
La table comporte une contrainte CHECK.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasClustIndex
Table
La table comporte un index cluster.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasDefaultCnst
Table
La table comporte une contrainte DEFAULT.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasDeleteTrigger
Table
La table comporte un déclencheur DELETE.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasForeignKey
Table
La table comporte une contrainte FOREIGN KEY.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasForeignRef
Table
La table est référencée par une contrainte FOREIGN KEY.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasIdentity
Table
La table comporte une colonne d'identité.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasIndex
Table
La table comporte un index de type non défini.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasInsertTrigger
Table
L'objet comporte un déclencheur INSERT.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasNonclustIndex
Table
La table comporte un index non-cluster.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasPrimaryKey
Table
La table comporte une clé primaire.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasRowGuidCol
Table
La table comporte un ROWGUIDCOL pour une colonne uniqueidentifier .
1 = Vrai
0 = Faux
Type de données de base : int
TableHasTextImage
Table
La table comporte une colonne text, ntext ou image.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasTimestamp
Table
La table comporte une colonne timestamp.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasUniqueCnst
Table
La table comporte une contrainte UNIQUE.
1 = Vrai
0 = Faux
Type de données de base : int
TableHasUpdateTrigger
Table
La table comporte un déclencheur UPDATE.
1 = Vrai
0 = Faux
Type de données de base : int
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 spécifié.
Type de données de base : int
TableInsertTriggerCount
Table
La table comporte le nombre de déclencheurs INSERT spécifié.
>0 = Nombre de déclencheurs INSERT.
Type de données de base : int
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.
1 = Vrai
0 = Faux
Type de données de base : int
TableIsLockedOnBulkLoad
Table
La table est verrouillée en raison d'un travail bcp ou BULK INSERT.
1 = Vrai
0 = Faux
Type de données de base : int
TableIsPinned
Table
La table est épinglé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
Cette table comporte un jeu d'options text in row.
> 0 = Nombre maximal d'octets autorisé pour text in row.
0 = L'option text in row n'est pas activée.
Type de données de base : int
TableUpdateTrigger
Table
La table comporte un déclencheur UPDATE.
> 1 = ID du premier déclencheur du type spécifié.
Type de données de base : int
TableUpdateTriggerCount
Table
La table comporte le nombre de déclencheurs UPDATE spécifié..
> 0 = Nombre de déclencheurs UPDATE.
Type de données de base : int
UserDataAccess
Fonction, vue
Indique que l'objet a accès aux données utilisateur, aux tables utilisateur, dans l'instance locale de SQL Server.
1 = Lecture
0 = Aucun
Type de données de base : int
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
sql_variant
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 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.
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