borrame.com - Colección particular de recortes de código y documentación para programación web

Canales RSS

Lo más fresco

  1. Enlaces sobre desarrollo web Modificado
  2. Cadena aleatoria en PHP Modificado
  3. Recortar texto Nuevo

Sugerencias del chef

Lo más visitado

  1. Canales RSS
  2. Formato condicional según el día de la semana
  3. Enlaces sobre desarrollo web
  4. Recortar texto
  5. Convertir de minutos a horas
Compartir esta página

Eliminar todos los objetos

Este script fulmina todos los objetos de la base de datos actual: tablas, vistas, funciones y procedimientos almacenados*. Es una alternativa rápida al viejo truco de eliminar la base de datos y volverla a crear y viene bien durante el desarrollo del proyecto (después ya no tanto). Yo lo ejecuto con SQLCMD pero imagino que no es la única manera. Debería funcionar con SQL Server 2005 o superior.

(*) Aún estoy aprendiendo Transact-SQL así que mi definición de todo puede ser incompleta.

Dos detalles importantes sobre el código tal y como está:

  1. Excluye las tablas que comienzan por «sys».
  2. Excluye las funciones que comienzan por «fn_».
  3. Excluye los procedimientos almacenados que comienzan por «sp_».

Es una forma de evitar cepillarnos algunos objetos creados automáticamente por herramientas como SQL Server Management Studio pero obliga a no usar nombres así en nuestras cosas; ajústese a gusto del consumidor.

/* * Script para SQLCMD - Elimina todos los objetos del usuario actual - v2018-03-26 */ DECLARE @spSQL AS NVARCHAR(MAX) DECLARE @fnSQL AS NVARCHAR(MAX) DECLARE @vwSQL AS NVARCHAR(MAX) DECLARE @fkSQL AS NVARCHAR(MAX) DECLARE @tblSQL AS NVARCHAR(MAX) SET @spSQL = '' SET @fnSQL = '' SET @vwSQL = '' SET @fkSQL = '' SET @tblSQL = '' -- Procedimientos almacenados SELECT @spSQL = @spSQL + 'DROP PROCEDURE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) FROM sys.procedures WHERE is_ms_shipped = 0 AND name NOT LIKE 'sp\_%' ESCAPE '\' -- Vistas SELECT @vwSQL = @vwSQL + 'DROP VIEW ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) FROM sys.views WHERE is_ms_shipped = 0 -- Claves foráneas SELECT @fkSQL = @fkSQL + 'ALTER TABLE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(OBJECT_NAME(parent_object_id)) + ' DROP CONSTRAINT ' + QUOTENAME(name) FROM sys.foreign_keys WHERE is_ms_shipped = 0 -- Tablas SELECT @tblSQL = @tblSQL + 'DROP TABLE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) FROM sys.tables WHERE is_ms_shipped = 0 AND name NOT LIKE 'sys%' -- Funciones SELECT @fnSQL = @fnSQL + 'DROP FUNCTION ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) FROM sys.objects WHERE is_ms_shipped = 0 AND name NOT LIKE 'fn\_%' ESCAPE '\' AND type = 'FN' EXEC (@spSQL) EXEC (@vwSQL) EXEC (@fkSQL) EXEC (@tblSQL) EXEC (@fnSQL) GO

Historial

v2018-03-26
Evitar errores al eliminar funciones que están en uso.
v2009-12-10
Faltaba eliminar las funciones.
¡Ahora con comentarios!
v2009-12-03
Primera versión.

Esta página ha sido impresa el miércoles 12 de agosto de 2026 (15:10:54 +0200) desde https://borrame.com/recortes/sql-server/eliminar-todo.html. La última vez que miré contenía HTML válido con CSS fresquito y si tiene flatas de ortografía ha sido sin querer.

Lorem ipsum dolor sit amet.

© 2005-2026 by Álvaro González (alvaro.es) • Burgos (España) • borrame.com