Los no-documentados: sp_MSforeachdb y sp_MSforeachtable.

T-SQL Pill

Existen dos procedimientos almacenados no documentados de SQL Server que te van a facilitar mucho la vida como DBA o DBD de SQL Server: sp_MSforeachdb y sp_MSforeachtable. ¡Vamos a conocerlos un poco mejor y a ver cómo usarlos!

sp_MSforeachdb es un SP que te va a permitir recorrer todas las bases de datos de la instancia ejecutando el comando que indiques.

EXEC sp_MSforeachdb @command

El parámetro @command es un string donde indicarás la sentencia T-SQL que quieres que se ejecute en cada una de las bases de datos. En caso de querer o necesitar referencia a la base de datos, tendrás que utilizar ?.

Ejemplo: Listar todas las tablas de cada una de las bases de datos de mi instancia. En este ejemplo, antes de listar las tablas, se indica la base de datos a la que se hace referencia

DECLARE @sql varchar(1000) 
SELECT @sql = 'USE ? 

SELECT ''?'' as DB
select SCHEMA_NAME(schema_id) as Esquema, [name] as tabla from sys.tables order by Esquema, tabla'

EXEC sp_MSforeachdb @sql

Visto este, podréis intuir qué hace el otro SP que mencionabamos: sp_MSforeachtable. Este SP te va a permitir recorrer todas las tablas de una base de datos y aplicar la sentencia T-SQL que especifiques. Funciona igual que el anterior.

EXEC sp_MSforeachtable @command
  • @command: es la sentencia T-SQL que se aplicará por cada tabla
  • ? : caracter a utilizar para referenciar a la tabla que corresponda

Ejemplo: Listar todas las tablas de una base de datos, indicando el número de registros de cada una de ellas.

DECLARE @sql varchar(1000) 
SELECT @sql = 'SELECT ''?'' TableName, Count(1) NumRegistros FROM ?'

EXEC sp_MSforeachtable @sql

Ahora que ya os he presentado a estos dos secretos a voces, los podemos utilizar sin problemas en las siguientes entradas de blog. Como os he comentado antes, usándolos, vuestra tareas serán más sencillas. ¿Los conocíais?

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.