Je ne suis pas trop familier avec le dictionnaire de données SQL Server, mais j'ai supposé que ce que j'essaie de faire est possible.Interroger le dictionnaire de données SQL Server pour trouver toutes les bases de données contenant la table 'x'
Nous avons un certain nombre de bases de données répliquées, sous différents noms disent: Client1 Client2 client3
Plutôt que de compter sur une convention de nommage, j'espérais identifier ces bases de données, selon qu'ils sont une clé table, appelez-le MyTable. Ainsi, commencé à penser une requête, comme suit était nécessaire:
SELECT db.name
FROM sys.databases db
JOIN sys.tables tbl ON ??
WHERE tbl.Name = 'MyTable'
Cela ne fonctionne pas, car je ne vois pas comment joindre sys.tables à sys.databases directement ou indirectement, et aussi sys.tables est une vue basée sur la base de données active, plutôt qu'un ensemble complet de tables pour toutes les bases de données.
Quelqu'un peut-il identifier une requête appropriée pour cette situation?
+1 Adapté au ci-dessous pour mon but, car j'avais besoin d'un seul résultat de requête. Toujours en espérant une réponse de requête pure si quelqu'un en a un. CREATE TABLE #ClientDbs ( Nom varchar (max) ) EXECUTE USE 'master.sys.sp_MSforeachdb ? INSERT INTO #ClientDbs SELECT table_catalog DE INFORMATION_SCHEMA.TABLES OÙ nom_de_table LIKE '' Profil '' ' SELECT * FROM #ClientDbs DROP TABLE #ClientDbs – MattH