Borrar Todos Los Objectos de una Base de Datos

Hace un tiempo estaba desarrollando unos proyectos utilizando Hosting de Terceros (Godaddy, Brinkster, Etc.) los cuales utilizaba sus Bases de Datos, y siempre tenia un problema, a la hora de subir un proyecto, pues tenia que eliminar todos los objetos de la base de datos utilizada, para volverlos a crear con los nuevos cambios, ya que ellos no te permiten restaurar un Backup directamente en sus servidores, esto es por medida de seguridad.

Con este problema, decidi crearme un metodo que me eliminara todos los Objectos que yo tenia creado en mi base de datos, aqui les dejo el codigo de ejemplo, con el cual solucione el problema!...


declare @n char(1)
set @n = char(10)

declare @stmt nvarchar(max)

-- procedimientos almacenados
select @stmt = isnull( @stmt + @n, '' ) +
    'drop procedure [' + name + ']'
from sys.procedures

-- constraints (Restricciones)
select @stmt = isnull( @stmt + @n, '' ) +
    'alter table [' + object_name( parent_object_id ) + '] drop constraint [' + name + ']'
from sys.check_constraints

-- funciones
select @stmt = isnull( @stmt + @n, '' ) +
    'drop function [' + name + ']'
from sys.objects
where type in ( 'FN', 'IF', 'TF' )

-- vistas
select @stmt = isnull( @stmt + @n, '' ) +
    'drop view [' + name + ']'
from sys.views

-- llaves primarias
select @stmt = isnull( @stmt + @n, '' ) +
    'alter table [' + object_name( parent_object_id ) + '] drop constraint [' + name + ']'
from sys.foreign_keys

-- tablas
select @stmt = isnull( @stmt + @n, '' ) +
    'drop table [' + name + ']'
from sys.tables

-- tipos definidos por el usuario
select @stmt = isnull( @stmt + @n, '' ) +
    'drop type [' + name + ']'
from sys.types
where is_user_defined = 1

exec sp_executesql @stmt

No Response to "Borrar Todos Los Objectos de una Base de Datos"

Publicar un comentario