SQL Server buscar objetos con sp_msforeachdb y sp_msforeachtable



Cuando nos encontramos con la necesidad de hacer acciones recursivas en bases de datos o tablas tenemos las stored procedures no documentadas sp_msforeach…. sp_msforeachdb, sp_msforeachtable, con las que podemos recorrer las bases de datos o tablas de una base de datos y realizar acciones.

Suscríbete a nuestra newsletter

Sin spam. Solo contenido útil para profesionales de bases de datos.



Por ejemplo, queremos listar el total de registros de todas las tablas de una base de datos, ejecutamos:

sp_msforeachtable @command1='USE pubs;SELECT count(*) as ''?'' FROM ?'
SQL Server

O por ejemplo queremos buscar la tabla “authors” y no sabemos en que base de datos esta y tenemos N bases de datos, entonces podemos ejecutar esta sentencia:

sp_msforeachdb @command1='USE ?;SELECT * FROM INFORMATION_SCHEMA.Tables Where TABLE_NAME = ''authors'''
Que recorrerá todas las bases de datos buscando la tabla “perdida”.

SQL Server

Estos son dos ejemplos de lo que podemos hacer con estas dos Stored Procedures de Sistema

Y esto es todo, feliz programming!!
Saludos
Alex.