Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

OBJECT_ID d'un objet dans une autre base de données - comment trouver l'ID de la base de données ou le nom/le nom complet de l'objet ?

Vous devriez pouvoir faire ceci :

SELECT
   name
FROM
    AnotherDB.sys.objects   --changes context
WHERE
    object_id = OBJECT_ID('AnotherDB.ASchema.ATable')

C'est ce que vous faites efficacement avec OBJECT_ID('AnotherDB.ASchema.ATable')

Cela signifie que vous pouvez vous fier à dbname.sys.objects et éviter toute confusion avec les fonctions de métadonnées.

Remarque :les nouvelles vues de catalogue sont conçus pour être utilisés et ne pas changer d'une version à l'autre, conformément au lien. Auparavant, il était considéré comme une mauvaise pratique d'utiliser des tables système, mais la stigmatisation persiste. Vous pouvez donc vous fier en toute sécurité à sys.objects plutôt qu'aux fonctions de métadonnées.