Borrar tablas de una base de datos SQL Server basado en un query para obtener las tablas

Un sencillo script para armar queries dinámicamente según lo obtenido en una consulta previa. En este ejemplo lo hago con una sentencia para borrar tablas.

OJO: Cuando se necesita optimizar rendimiento y manejar grandes volúmenes de datos, no se recomienda los queries dinámicos

DECLARE @Sql NVARCHAR(500) DECLARE @Cursor CURSOR

SET @Cursor = CURSOR FAST_FORWARD FOR
--Query to select and build DROP TABLE sentence
SELECT 'DROP TABLE '+FLD AS FIELD FROM
(SELECT '['+TABLE_SCHEMA+'].['+TABLE_NAME+']' AS FLD
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND
TABLE_SCHEMA <> 'dbo') AS TBL

OPEN

@Cursor FETCH NEXT FROM @Cursor INTO @Sql

PRINT 'THE FOLLOWING TABLES WERE DELETED:'
PRINT '---------------------------------'

WHILE
	(@@FETCH_STATUS = 0)
BEGIN
	Exec SP_EXECUTESQL @Sql
	PRINT '- ' + @Sql
FETCH NEXT FROM @Cursor INTO @Sql
END
CLOSE
@Cursor DEALLOCATE @Cursor

GO

Saludos,

[this post in english]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s