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