Aplicação em lotes com script

Delphi

12/08/2011

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

Pjava

Curtidas 0
POSTAR