/***********************************************************************************************************************************/
----									COMENTARIOS									   ----

-- PONER EL NOMBRE DE LA BASE DE DATOS ORIGEN EN LA VARIABLE *****@BDOrigen**** POS 49
-- PONER EL NOMBRE DE LA BASE DE DATOS DESTINO EN LA VARIABLE ****@BDDestino**** POS 50

--EL PRIMER RESULTADO CORRESPONDE A LOS CAMPOS FALTANTES DE LA DB ****ORIGEN****
--EL SEGUNDO RESULTADO CORRESPONDE A LOS CAMPOS FALTANTES DE LA DB ****DESTINO****
/***************************************************************************************************************************************/


Begin Tran bds

------------- CREACION BD ORIGEN Y DESTINO -------------------------------------------------------------------------------------
create table #BD_Origen  (Pos_Reg int,
						  Nom_Table char(55),
						  Nom_Column char(40),
						  Pos_Column int,
						  Tip_Tab char(15))

create table #BD_Destino (Pos_Reg int,
						  Nom_Table char(55),
						  Nom_Column char(40),
						  Pos_Column int,
						  Tip_Tab char(15))

					 
------------- CREACION TABLA Y CAMPO QUE NO EXISTE ORIGEN ----------------------------------------------------------------------------------
create table #No_BD_Origen (Nom_table char(55),
							Nom_Column char (40))						 

------------- CREACION TABLA Y CAMPO QUE NO EXISTE ORIGEN ----------------------------------------------------------------------------------
create table #No_BD_Destino (Nom_table char(55),
							Nom_Column char (40))	
							
------------- VARIAS VARIABLES ------------------------------------------------------------------------------------------
Declare @BDOrigen nvarchar(MAX),
		@BDDestino nvarchar(MAX),
		@Num_Max_tablaO int,
		@Num_Max_tablaD int,
		@Nom_Tabla nvarchar(MAX),
		@Cam_Tabla nvarchar(MAX),
		@NT nvarchar(MAX),
		@CT nvarchar(MAX),
		@NTX nvarchar(MAX),
		@CTX nvarchar(MAX)

------------- NOMBRE BASE DATOS ORIGEN y DESTINO --------------------------------------------------------------------------------------
set @BDOrigen='InnFront'
set @BDDestino='InnFront_New'

------------- CONTADORES ---------------------------------------------------------------------------------------------------
--set @Num_Max_tablaO=1



------------- INSERT TABLAS DESTINO  -------------------------------------------------------------------------------------
execute('insert into #BD_Origen
select ROW_NUMBER() OVER(ORDER BY ist.TABLE_TYPE) AS Row, isc.TABLE_NAME,isc.COLUMN_NAME,isc.ORDINAL_POSITION, ist.TABLE_TYPE 
			from '+@BDOrigen+'.INFORMATION_SCHEMA.COLUMNS isc 
			inner join '+@BDOrigen+'.INFORMATION_SCHEMA.TABLES ist on isc.TABLE_NAME = ist.TABLE_NAME')
			  
			  
execute('insert into #BD_Destino
select ROW_NUMBER() OVER(ORDER BY ist.TABLE_TYPE) AS Row, isc.TABLE_NAME,isc.COLUMN_NAME,isc.ORDINAL_POSITION, ist.TABLE_TYPE 
			from '+@BDDestino+'.INFORMATION_SCHEMA.COLUMNS isc
			inner join '+@BDDestino+'.INFORMATION_SCHEMA.TABLES ist on isc.TABLE_NAME = ist.TABLE_NAME')
			  
delete #BD_Origen where Tip_Tab='VieW'
delete #BD_Destino where Tip_Tab='VieW'


------------- FALTANTE EN BD ORIGEN   ------------------------------------------------------------------------------------
set @Num_Max_tablaD=1
WHILE @Num_Max_tablaD <= (select MAX(Pos_Reg) from #BD_Destino)
BEGIN
	select @Nom_Tabla= Nom_table, @Cam_Tabla=Nom_Column from #BD_Destino where Pos_Reg=@Num_Max_tablaD
	
		select @NT=Nom_Table, @CT=Nom_Column from #BD_Origen where Nom_Table=@Nom_Tabla and Nom_Column=@Cam_Tabla
		if @Nom_Tabla=@NT and @Cam_Tabla=@CT 
			Begin
			  set @Nom_Tabla=NULL
			  set @Cam_Tabla=NULL
			End	
	if @Nom_Tabla is not NULL 
	begin
		insert into #No_BD_Origen (Nom_table, Nom_Column) values (@Nom_Tabla, @Cam_Tabla)
	end	
	SET @Num_Max_tablaD = @Num_Max_tablaD + 1
END

 select * from #No_BD_Origen

------------- FALTANTE EN BD DESTINO   ------------------------------------------------------------------------------------
set @Num_Max_tablaO= 1
WHILE @Num_Max_tablaO <= (select MAX(Pos_Reg) from #BD_Origen)
BEGIN
	select @Nom_Tabla= Nom_table, @Cam_Tabla=Nom_Column from #BD_Origen where Pos_Reg=@Num_Max_tablaO
	
	select @NT=Nom_Table, @CT=Nom_Column from #BD_Destino where Nom_Table=@Nom_Tabla and Nom_Column=@Cam_Tabla
	if @Nom_Tabla=@NT and @Cam_Tabla=@CT 
		Begin
		  set @Nom_Tabla=NULL
		  set @Cam_Tabla=NULL
		End	
	if @Nom_Tabla is not NULL 
	begin
		insert into #No_BD_Destino(Nom_table, Nom_Column) values (@Nom_Tabla, @Cam_Tabla)
	end	
	SET @Num_Max_tablaO = @Num_Max_tablaO + 1
END

select * from #NO_BD_Destino
 
Rollback 


