Fórum Aplicação em lotes com script #406467
12/08/2011
0
Preciso criar uma aplicação da seguinte forma: Precisa rodar um script de update, onde eu atualizo uma tabela baseada em outra tabela. Só que eu estou falando em mais ou menos 500.000.000 de registros em cada uma das tabelas. Tentei rodar o scrpt diretamente na tabela e dois dias depois não atualizou por falta de energia em minha máquina(não tem no break). Rodei direto no servidor e aconteceu um caso em que havia um registro duplicado(subquery retornou mais de um registro) e isso abortiu e deu Roll Back e voltou tudo a estaca 0. Bem, resolvi criar uma aplicação somente para isso que aí sim, eu posso ter controle. Então, para não derrubar o Servidor, resolvi rodar por lotes assim: a cada 10.000.000 ou um pouco mais o sistema vai atualizando a tabela e commitando. A dúvida é como recomeçar de onde eu parei? Como fazer isso? Abaixo o script. Uso Sql Server 2005.
UPDATE
CONHECIMENTO_CARGA
SET
DATA_EMISSAO_CONHECIMENTO = COALESCE(
(SELECT
CONVERT(VARCHAR(30),OPERA.DATA,21) FROM OPERA
WHERE
OPERA.CONTRATO = CONHECIMENTO_CARGA.NUMERO_CONHECIMENTO AND
OPERA.COD_CREDENCIADA = CONHECIMENTO_CARGA.FILIAL_ORIGEM AND
OPERA.DATA = CONHECIMENTO_CARGA.DATA_EMISSAO_REAL AND
(OPERA.DATA >= '11/01/2010' AND OPERA.DATA <= '02/28/2011')), DATA_EMISSAO_CONHECIMENTO )
WHERE
DATA_EMISSAO_CONHECIMENTO = '1899-12-30 00:00:00.000'
Pjava
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)