Autor: Daniel Davila Lopez

Daniel Davila Lopez

SQL, Insertar datos con identity y constraint

Se ejecuta el siguiente query para generar el query de inserción de datos

	--
	--********************************************  CAMPOS  ***************************************
	declare @ServerS as varchar(50) = 'srvbattanet'
	declare @BDataS as varchar(50) = 'battanet'
	declare @BData as varchar(100) = 'battanet' ----baasedatos destino
	declare @Tabla as varchar(200) = 'tipos'
	declare @Regs as varchar(600) = '('
	
	DECLARE objects_cursor CURSOR LOCAL FAST_FORWARD READ_ONLY FOR 
			SELECT  c.name 
			FROM sys.columns c JOIN sys.tables t 
			ON c.object_id = t.object_id
			WHERE t.name = @Tabla
	DECLARE @object_name AS varchar(100) 
	OPEN objects_cursor 
	FETCH NEXT FROM objects_cursor into @object_name
	WHILE @@FETCH_STATUS = 0 
		BEGIN
			set @Regs = @Regs + @object_name + ','
			FETCH NEXT FROM objects_cursor into @object_name
	end;	 		
	CLOSE objects_cursor; 
    DEALLOCATE objects_cursor;
	
	set @Regs = substring(@Regs,1,LEN(@Regs)-1) + ')'
	
	print	'--ALTER TABLE '+ @BData + '.dbo.[' + @Tabla + '] NOCHECK CONSTRAINT ALL'
	print   'set identity_insert '+ @BData + '.dbo.[' + @Tabla + '] on'
	print   'insert into '+ @BData + '.dbo.[' + @Tabla + ']' + @Regs 
	print   'SELECT T.* FROM ' + @ServerS + '.' + @BDataS + '.dbo.' + @Tabla + ' T  WITH (NOLOCK)'
	print   'set identity_insert '+ @BData + '.dbo.[' + @Tabla + '] oFF'
	print   '--ALTER TABLE '+ @BData + '.dbo.[' + @Tabla + '] CHECK CONSTRAINT ALL'
	--**********************************************************************************************
	--*******************************************  EJEMPLO  ****************************************
		ALTER TABLE battanet.dbo.[tipos] NOCHECK CONSTRAINT ALL
		set identity_insert battanet.dbo.[tipos] on
		insert into battanet.dbo.[tipos](id_tipo,tipo_grupo,tipo_subgrupo,nombre,descripcion,id_estatus)
		SELECT T.* FROM srvbattanet.battanet.dbo.tipos T  WITH (NOLOCK)
		set identity_insert battanet.dbo.[tipos] oFF
		ALTER TABLE battanet.dbo.[tipos] CHECK CONSTRAINT ALL
	--Caracteristica:  conectado a la base de datos donde se insertaran los datos y tener un linked server de donde se extraera la informacion}}

 

Disponible Cliente Alerta: Venta solo por disponible del cliente

Parámetro: DisponibleClienteAlerta

Descripción: Indica si se valida que el cliente solo use el disponible que tiene y evitar exceder el monto a pagar a crédito, evitando el envió del vale a lista negra. la cantidad restante de importe por pagar debe ser saldada por otra forma de pago.

Creación del parámetro en servidor VISCOIDB.VISCOI.DBO.PARAMETROS_CONTROL

USE viscoi
GO

PRINT '01) DECLARACION DE VARIABLES'
DECLARE @ID_PARAMETRO AS VARCHAR(50) = 'DisponibleClienteAlerta'
DECLARE @DESCRIPCION AS VARCHAR(MAX) = 'VENTA SOLO POR DISPONIBLE DEL CLIENTE'
DECLARE @VALOR AS VARCHAR(50) = 'NO'
DECLARE @USUARIO AS VARCHAR(12) = 'JARREOLA'

PRINT '02) GENERAR BASE CON LAS SUCURSALES A LAS QUE SE LES CREARA EL PARAMETRO'
IF OBJECT_ID('tempdb..#suc') > 0
	DROP TABLE #suc

SELECT plaza,id_sucursal
INTO #suc
FROM sucursales
WHERE id_empresa = 'BHERMANOS'
AND curp = 'no'
AND subtipo <> 'credito'
AND id_sucursal NOT LIKE 'VM_%'
AND id_sucursal NOT LIKE 'OUTLET_%' 
AND id_sucursal NOT LIKE 'OFERTAZ_%'
--AND (plaza NOT IN ('01 TORREON','02 DURANGO','09 PARRAL','25 GOMEZ PALACIO','28 TEPIC','56 FCO I MADERO')
--AND zona <> 'PACIFICO')
ORDER BY plaza

PRINT '03) ACTUALIZAR EL CAMPO DE LA PLAZA'
UPDATE SUC SET SUC.PLAZA = S.plaza
FROM #suc SUC
JOIN SUCURSALES S WITH(NOLOCK)
ON S.id_sucursal = SUC.id_sucursal
AND S.id_empresa = 'BHERMANOS'

PRINT '04) CREAMOS LA TEMPORAL DE #PARAMETROS_CONTROL'
IF OBJECT_ID('tempdb..#TMP_PARAMETROS_CONTROL') > 0
	DROP TABLE #TMP_PARAMETROS_CONTROL

CREATE TABLE #TMP_PARAMETROS_CONTROL
(
id_parametro VARCHAR(50)
, llave VARCHAR(50)
, sistema VARCHAR(20)
, id_empresa VARCHAR(12)
, id_sucursal VARCHAR(12)
, usuario VARCHAR(12)
, nombre TEXT
, valor VARCHAR(50)
, fum DATETIME
, id_usuario VARCHAR(12)
)

PRINT '05) GENERAMOS EL PRIMER PARAMETRO: ' + @ID_PARAMETRO
INSERT INTO #TMP_PARAMETROS_CONTROL
SELECT id_parametro = @ID_PARAMETRO
,llave = 'BHERMANOS'+id_sucursal
,sistema = 'CAJA REGISTRADORA'
,id_empresa = 'BHERMANOS'
,id_sucursal
,usuario = ''
,nombre = @DESCRIPCION
,valor = @VALOR
,fum = GETDATE()
,id_usuario = @USUARIO
FROM #suc S WITH(NOLOCK)

PRINT '06) VERIFICAMOS SI YA EXISTE EL PARAMETRO Y ACTUALIZAMOS'
UPDATE PC SET PC.VALOR = TPC.VALOR, PC.FUM=TPC.FUM, PC.id_usuario = TPC.id_usuario
FROM #TMP_PARAMETROS_CONTROL TPC
JOIN PARAMETROS_CONTROL PC WITH(NOLOCK)
ON PC.ID_PARAMETRO = TPC.ID_PARAMETRO
AND PC.LLAVE = TPC.LLAVE

PRINT '07) SI NO EXISTE EL PARAMETRO LO INSERTAMOS'
INSERT INTO PARAMETROS_CONTROL
SELECT TPC.*
FROM #TMP_PARAMETROS_CONTROL TPC WITH(NOLOCK)
LEFT JOIN PARAMETROS_CONTROL PC WITH(NOLOCK)
ON PC.ID_PARAMETRO = TPC.ID_PARAMETRO
AND PC.LLAVE = TPC.LLAVE
WHERE PC.ID_PARAMETRO IS NULL

PRINT '08) VALIDAMOS QUE EL PARAMETRO VIAJE A CORPORATIVO, SI NO VIAJA LO AGREGAMOS'
IF NOT EXISTS(SELECT * FROM parametros_control_envio WHERE ID_PARAMETRO = @ID_PARAMETRO)
BEGIN
	INSERT INTO parametros_control_envio
	SELECT @ID_PARAMETRO,@DESCRIPCION
END

PRINT '09) PARAMETRO CREADO/ACTUALIZADO CON EXITO!!!'
SELECT * FROM parametros_control WHERE id_parametro = @ID_PARAMETRO

 

 

Documento Confidencial

Exchange, Migración De Buzones

Ingresamos al siguiente link: https://webmail.bhermanos.com/ecp/

Ingresamos usuario y contraseña con permisos.

Enseguida se muestra la siguiente pantalla:

Lo que nos interesa es la parte de migración como se muestra en la sig. pantalla.

Presionaremos el símbolo de (+) para agregar un nuevo Buzon, el cual vamos a mover a una distinta base de datos.

Así como se muestra en la siguiente  figura.

Enseguida se abre una venta diferente como en la sig. imagen.

presionamos en (+) para que se despliegue la sig. ventana, En la barra de búsqueda pondremos el nombre de el buzón que queremos mover. Lo Seleccionamos y lo agregamos, después pulsamos aceptar.

Le pondremos nombre al lote de buzones que deseamos migrar.

Elegimos la ubicación nueva, la base de datos a la cual moveremos el lote de buzones

confirmamos la nueva ubicación  de el lote que moveremos y presionamos siguiente.

 por ultimo una vez que estamos seguros de los movimientos que se harán solo presionamos en el botón «nuevo» y empezaremos con el proceso.

Se agrega el buzón  o  lote a la cola para empezar el proceso de migración.

Solo queda esperar a que se sincronicen los buzones y empiece el proceso .

Se muestra claramente cuando finalizo el proceso.

Hasta aquí se tiene una migración correcta .