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

Canales RSS

Lo más fresco

  1. Bookmarklets Nuevo
  2. Recetario básico para CakePHP/2 Nuevo
  3. Certificado auto-firmado Nuevo

Sugerencias del chef

Lo más visitado

  1. Fecha y hora
  2. Dar formato a un número
  3. Reiniciar secuencia
  4. Vaciar un esquema
  5. Certificado auto-firmado
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. Está probado con SQL Server 2005.

(*) 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 - v2009-12-10 */ 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 '\' -- 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' -- 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%' EXEC (@spSQL) EXEC (@fnSQL) EXEC (@vwSQL) EXEC (@fkSQL) EXEC (@tblSQL) GO

Historial

v2009-12-10
Faltaba eliminar las funciones.
¡Ahora con comentarios!
v2009-12-03
Primera versión.

Esta página ha sido impresa el sábado 23 de septiembre de 2017 (02:22:32 +0200) desde http://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.

borrame.com es el sitio anteriormente conocido como bits.demogracia.com (no confundir con Demogracia, que sólo pasaba por ahí).

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