Mudanças entre as edições de "Verificar problemas de Importação"

De GeoSales
Ir para navegação Ir para pesquisar
(Criou página com '<pre> 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...')
 
 
Linha 8: Linha 8:
 
EXEC sp_who2 414
 
EXEC sp_who2 414
  
DBCC INPUTBUFFER
+
DBCC INPUTBUFFER(414)
  
 
--Nesse delete é um indicio que a importação está TRAVADA
 
--Nesse delete é um indicio que a importação está TRAVADA

Edição atual tal como às 11h37min de 11 de dezembro de 2017

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