T-SQL: Eliminar todas las tablas de una base de datos

·2 min de lectura·

¿Habéis necesitado alguna vez borrar todas las tablas de una base de datos en SQL Server?. Parece una tarea sencilla, pero si las tablas tienen relaciones entre ellas, reglas de integridad referencial, desencadenadores, etc., la cosa se complica.

Aquí un script con el que se puede hacer:

EXEC sp\_MSforeachtable @command1 = "DROP TABLE ?"

sp_MSforeachtable,  es un procedimiento almacenado oculto in SQL Server, el cuál se ejecuta por cada tabla que hay en la base de datos activa. Hay que tener en cuenta que esa operación no se puede deshacer, así que hay que estar seguro de lo que se quiere hacer.

Si hay problemas con el comando anterior es porque seguramente hay reglas de integridad entre las tablas y por eso no las puede borrar. En ese caso lo mejor es hacer mejor lo siguiente:

\-- Primero desabilitar la integridad referencial 
EXEC sp\_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' 
GO

EXEC sp\_MSforeachtable @command1 = "DROP TABLE ?"

\-- Ahora volver a habilitar la integridad referencial
EXEC sp\_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL' 
GO

Sql ServerAunque aparentemente volver a habilitar la integridad referencial no tiene sentido, porque la base de datos se queda sin tablas, es recomendable reactivarla para que su funcionamiento sea normal en adelante.

Comentarios (0)

Sé el primero en comentar.

T-SQL: Re-Indexar todas las tablas de una Base de Datos

·1 min de lectura

El artículo explica cómo re‑indexar todas las tablas de una base de datos SQL Server cuando no existe un comando único para ello. Se presenta un script TSQL que recorre el catálogo de datos, obtiene los nombres de todas las tablas base y ejecuta DBCC DBREINDEX para cada una, evitando mensajes de información. El cursor se cierra y libera al finalizar. El autor sugiere que el código sea útil y menciona un libro de SQL Server 2014 en español como recurso adicional.

T-SQL: Listar todas las tablas de una base de datos con sus respectivos tamaños

·2 min de lectura

El artículo explica cómo obtener el tamaño de cada tabla en una base de datos SQL Server. Se utiliza una consulta sobre la tabla sysindexes, filtrando solo los índices relevantes (0, 1, 255) y excluyendo objetos no tabulares. La consulta convierte y suma los campos rows, reserved, dpages, used y reserved‑used, multiplicándolos por 8 para obtener bytes. Los resultados se formatean como números legibles y se ordenan descendente por número de registros. Se muestra el código completo y se sugiere consultar un libro de SQL Server para más trucos.

Adjuntar una Base de Datos de SQL Server sin el fichero LOG

·3 min de lectura

El artículo explica cómo recuperar una base de datos de SQL Server cuando solo se dispone del fichero MDF y falta el LOG. Se recomienda crear una nueva base con el mismo nombre, detener el servicio, sustituir el MDF, reiniciar el servicio y aceptar que la base quede en estado “sospechoso”. Luego se ejecuta un script que reconstruye el log, muestra advertencias de pérdida de consistencia, pero DB