Verificar problemas de Importação
Ir para navegação
Ir para pesquisar
1. Verificar processos que estão sendo executados pelo import (dentro da base em questão). select db_name(dbid), * from sys.sysprocesses where db_name(dbid) = 'bd_ssm_guaraves' and program_name like '%Import%' EXEC sp_who2 414 DBCC INPUTBUFFER --Nesse delete é um indicio que a importação está TRAVADA --DELETE FROM LOG_ALTERACAO_USUARIO WHERE CD_SINC_USUARIO NOT IN (SELECT LU1.CD_SINC_USUARIO FROM --LOG_ALTERACAO_USUARIO LU1, (SELECT LU2.CD_USUARIO, LU2.NM_TABELA, LU2.ID_KEY, MAX AS DT_INSERCAO FROM LOG_ALTERACAO_USUARIO LU2 WHERE LU2.DT_SINCRONISMO IS NOT NULL GROUP BY LU2.CD_USUARIO, LU2.NM_TABELA, LU2.ID_KEY) AS T1 WHERE LU1.CD_USUARIO = T1.CD_USUARIO AND LU1.NM_TABELA = T1.NM_TABELA AND LU1.ID_KEY = T1.ID_KEY AND LU1.DT_INSERCAO = T1.DT_INSERCAO AND LU1.TP_OPERACAO <> 'D') AND DT_SINCRONISMO IS NOT NULL 2. Matar o processo travado pela empresa. USE bd_ssm_guaraves; kill 414; 3. Alterar situação da importação na empresa após o processo morto. UPDATE AGENDAMENTO_IMPORTACAO SET DS_SITUACAO = 'F' where DS_SITUACAO = 'E' 4. Executar script pelo Fábio de registros na log_alteracao_usuario. SET nocount ON; DECLARE @r INT; DECLARE @msg VARCHAR DECLARE @restantes INT DECLARE @t1 DATETIME DECLARE @t2 DATETIME IF Object_id('tempdb..#pode_apagar') IS NOT NULL -- Check for table existence DROP TABLE #pode_apagar; SET @t1 = Getdate() SET @msg = 'obtendo lista de registros para apagar...' RAISERROR WITH nowait SELECT cd_sinc_usuario INTO #pode_apagar FROM log_alteracao_usuario lau WHERE EXISTS (SELECT TOP 1 1 FROM log_sync_strategy las WHERE lau.cd_usuario = las.cd_usuario AND lau.nm_tabela = las.nm_tabela AND lau.dt_insercao < las.dt_last_sync) SET @restantes = (SELECT Count(1) FROM #pode_apagar) SET @msg = 'total para apagar ' + Cast(@restantes AS VARCHAR) + ' em ' + Cast(Datediff(ss, @t1, Getdate()) AS VARCHAR) + 's' RAISERROR WITH nowait SET @r = 1; WHILE @r > 0 BEGIN BEGIN TRAN SET @t2 = Getdate() DELETE TOP (50000) lau FROM log_alteracao_usuario lau WHERE EXISTS (SELECT TOP 1 1 FROM #pode_apagar pa WHERE pa.cd_sinc_usuario = lau.cd_sinc_usuario) SET r = @ROWCOUNT; SET @restantes = @restantes - @r SET @msg = 'apagados ' + Cast(@r AS VARCHAR(max)) + ' em ' + Cast(Datediff(ss, @t2, Getdate()) AS VARCHAR(max)) + 's, faltam ' + Cast(@restantes AS VARCHAR(max)) RAISERROR(@msg,0,1) WITH nowait COMMIT TRANSACTION; CHECKPOINT; END IF Object_id('tempdb..#pode_apagar') IS NOT NULL -- Check for table existence DROP TABLE #pode_apagar; SET @msg = 'finalizado em ' + Cast(Datediff(ss, @t1, Getdate()) AS VARCHAR) + 's' RAISERROR WITH nowait