Bases de datos

SQL Server

Eliminación de objetos de bases de datos

Última actualización: 25-09-2020 22:32

El script SQL compartido en esta página permite:

IMPORTANTE
Le ejecución de cada uno de los puntos mencionados depende de asignar valor "1" a las variables bandera:

MUY IMPORTANTE
No pongan valor 1 a la bandera @flagDropObjects porque esto provocará la eliminación de todos los objetos de la base de datos.
Este sitio web y el autor de esta nota no se hace responsable de los resultados obtenidos por la mala ejecución de este script.

declare  @flagShowObjectsList bit = 1, @flagShowCommands bit = 1, @flagDropObjects bit = 0;
declare @i int, @n int, @XSQL varchar(max);
declare @TSQL TABLE (ROWID int identity(1, 1), NGROUP int, XSQL varchar(max), OBJ_NAME varchar(500));
 
	-- Generación de comandos de eliminación de objetos	
	set nocount on;
 
	insert into @TSQL (NGROUP, XSQL, OBJ_NAME)	
		select
				100 as NGROUP,
				'alter table [' + e.name + '].[' + c.name + '] drop constraint [' + b.name + '];' as XSQL, a.[name] as [OBJ_NAME]
		from sys.objects a
			inner join sys.foreign_keys b on b.referenced_object_id = a.object_id
			inner join sys.objects c on c.object_id = b.parent_object_id	
			inner join sys.schemas e on e.schema_id = c.schema_id
 
		union	select 200 as NGROUP, 'drop function [' + b.name + '].[' + a.name + ']'  as XSQL, a.[name] as [OBJ_NAME]
				from sys.objects a 
					inner join sys.schemas b on b.schema_id = a.schema_id 
				where a.type in ('fn', 'TF') and not a.name in ('fn_diagramobjects')
 
		union	select 225 as NGROUP, 'drop proc [' + b.name + '].[' + a.name + ']'  as XSQL, a.[name] as [OBJ_NAME]
				from sys.objects a 
					inner join sys.schemas b on b.schema_id = a.schema_id 
				where a.type = 'p' and not a.name in ('sp_upgraddiagrams', 'sp_helpdiagrams', 'sp_helpdiagramdefinition', 
														'sp_creatediagram', 'sp_renamediagram', 'sp_alterdiagram', 
														'sp_dropdiagram'
													)
 
		union	select 250 as NGROUP, 'drop view [' + b.name + '].[' + a.name + ']'  as XSQL, a.[name] as [OBJ_NAME]
				from sys.objects a 
					inner join sys.schemas b on b.schema_id = a.schema_id 
				where a.type = 'v'
 
		union	select 300 as NGROUP, 'drop table [' + b.name + '].[' + a.name + ']'  as XSQL, a.[name] as [OBJ_NAME]
				from sys.objects a 
					inner join sys.schemas b on b.schema_id = a.schema_id 
				where a.type = 'u' and not a.name in ('sysdiagrams');
	set nocount off;
 
 
	if (@flagShowObjectsList = 1)
	begin
		select * 
		from sys.objects a
		where not a.[name] in (	'sp_upgraddiagrams', 'sp_helpdiagrams', 'sp_helpdiagramdefinition', 
								'sp_creatediagram', 'sp_renamediagram', 'sp_alterdiagram', 
								'sp_dropdiagram',
								'fn_diagramobjects', 'sysdiagrams'
							)
				and not a.[type] in (	'S', 'D', 'IT', 'PK', 'F', 'UQ', 'SQ')
		order by a.[type], a.[name];
	end;
 
	if (@flagShowCommands = 1) select * from @TSQL order by NGROUP;
 
	if (@flagDropObjects = 1)
	begin
		set @i = 1; set @n = (select count(*) from @TSQL);
		while (@i <= @n)
		begin
			set @XSQL = (select XSQL from @TSQL where rowid = @i);
			exec (@XSQL);
			set @i = @i + 1;
		end;
	end;
 
go
 
 

 

Política de Privacidad

Última actualización: 23 de diciembre de 2024

 X 

Tu privacidad es importante para nosotros. En esta política de privacidad, explicamos qué información recopilamos cuando visitas nuestro sitio web y cómo utilizamos esa información.

1. Información que recopilamos

Este sitio no recopila información personal de los usuarios, excepto cuando un usuario elige voluntariamente comunicarse a través del formulario de contacto. En ese caso, los datos proporcionados (como tu nombre y correo electrónico) se utilizarán únicamente para responder a tu consulta.

2. Uso de Cookies

Este sitio web utiliza una única cookie esencial llamada PHPSESSID.

No usamos cookies de análisis ni de seguimiento.

3. Seguridad de los datos

Adoptamos medidas técnicas y organizativas razonables para proteger cualquier información que compartas con nosotros contra el acceso no autorizado, pérdida o alteración.

4. Enlaces a sitios de terceros

Nuestro sitio web puede contener enlaces a otros sitios web. No somos responsables de las prácticas de privacidad ni del contenido de dichos sitios.

5. Cambios en esta política de privacidad

Nos reservamos el derecho de actualizar esta política de privacidad en cualquier momento. Cualquier cambio será publicado en esta misma página e incluirá la fecha de la última actualización.

6. Contacto

Si tienes preguntas o inquietudes sobre esta política de privacidad, puedes comunicarte con nosotros a través de la página de contacto disponible en este sitio web.

7. Cumplimiento con Normativas Internacionales de Privacidad

Nuestro sitio web cumple con las principales regulaciones internacionales de protección de datos personales para garantizar la privacidad y seguridad de los usuarios. Esto incluye, pero no se limita a, las siguientes leyes:

Si tienes preguntas o dudas sobre el cumplimiento de estas leyes, no dudes en ponerte en contacto conmigo a través de la página de contacto de este sitio web.