Verificar problemas de Importação

De GeoSales
Revisão de 11h37min de 11 de dezembro de 2017 por Aldenor.rocha (discussão | contribs)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
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(414)

--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