Est-il possible de dire si une table est référencée dans une autre database / server?

Je construis un script PHP à usage personnel en utilisant le pilote MSSQL dans PDO (en tant que tel il n'y a pas de plan pour laisser quiconque d'autre que moi utiliser cela) qui, lorsqu'il est fourni avec un nom de table returnnera tous les objects qui le referencent

en utilisant MySVR.MyDB.dbo.Staff comme ma table je commence d'abord avec cette requête

 SELECT referencing_schema_name = SCHEMA_NAME(o.SCHEMA_ID), referencing_object_name = o.name, referencing_object_type_desc = o.type_desc, referenced_schema_name, referenced_object_name = referenced_entity_name, referenced_object_type_desc = o1.type_desc, referenced_server_name, referenced_database_name FROM sys.sql_expression_dependencies sed INNER JOIN sys.objects o ON sed.referencing_id = o.[object_id] LEFT OUTER JOIN sys.objects o1 ON sed.referenced_id = o1.[object_id] WHERE referenced_entity_name = 'Staff' AND referenced_server_name IS NULL AND referenced_database_name IS NULL ORDER BY o.name 

qui list tous les objects sur MyDB qui referencent ma Table de Personnel

Je sais que ma table Staff est utilisée sur une autre database dans une procédure stockée, MySVR.MySecDB.dbo.spMyDB_Staff . Pour le confirmer, je modifie la string de connection PDO et réexécute la requête mais avec referenced_database_name = 'MyDB' pour m'assurer que seuls les résultats qui referencent MySVR.MyDB.dbo.Staff et non MySVR.MySecDB.dbo.Staff .

Le problème est cependant de savoir comment détecter si Staff est référencé dans MySecDB ou toute autre database en dehors de MyDB pour que je puisse l'utiliser? De même, comment puis-je détecter si ma table est référencée sur un autre server comme dans MyOtherSVR.anotherDBDB.dbo.spMySVR_MyDB_Staff ?

J'ai pensé à exécuter la requête sur chaque server et database (en modifiant la string de connection PDO dans une boucle) et en vérifiant si j'ai obtenu des résultats mais cela me semble excessif.

Alors est-il un moyen de dire si une table est référencée dans une autre database / server?

Les references dans d'autres bases de données sur la même instance SQL sont assez faciles à find: vous pouvez exécuter une requête similaire à celle que vous avez publiée sur chacune des autres bases de données de l'instance, en supposant que vous disposez des permissions suffisantes dans toutes les bases de données.

Si vous n'avez pas access à toutes les bases de données sur votre même instance, vous êtes bloqué.

Au-delà de cela, c'est impossible au mieux et impossible au pire d'identifier des references sur d'autres servers. Cela ne serait possible que si vous connaissiez et si vous étiez un administrateur de tous les servers qui pourraient referencer cette database.