Manutenção do Banco de Dados Biztalk

O Biztalk ao processar muitas informações por um longo período de tempo (mais de 1 ano por exemplo), pode causar problemas de performance no ambiente em questão, pois o tamanho dos bancos aumentam consideravelmente de forma rápida, podendo apresentar vários erros.

Para maiores informações, recomendo ler o artigo “Como solucionar problemas de Banco de Dados do Biztalk Server”, segue o link: http://support.microsoft.com/kb/952555

Para limpar o MessageBox

Para fazer a manutenção do banco manualmente, o BizTalk disponibiliza procedures prontas que podemos utilizar para executar a tarefa:

  1. Crie a procedure bts_CleanupMsgBox no Banco do MessageBox (BizTalkMsgBoxDb), rodando o script que pode ser encontrado em <Pasta de Instalação do Biztalk >\Schema\msgbox_cleanup_logic.sql.
  2. Pare todos os Serviços do Biztalk (Application, Host Instance, etc). Se estiver usando HTTP, SOAP, ou WCF adapter, reinicie o IIS executando o comando IISRESET do prompt de comando: iisreset /noforce.
  3. No BizTalkMsgBoxDb execute as procedures bts_CleanupMsgbox e bts_PurgeSubscriptions.

Para limpar os dados de Tracking

  1. No banco de Tracking BizTalkDTADb execute a procedure dtasp_CleanHMData.
  2. Reinicie todos os Serviços do Biztalk.

Lembrando que essas procedures usam o comando TRUNCATE em todas as tabelas pertinentes e uma vez executada não será possível recuperar os dados. Indicado para ambientes de Testes e Qualidade.

Para maiores informações sobre o comando TRUNCATE, leia:

http://social.msdn.microsoft.com/Forums/pt-BR/520/thread/11054d58-850f-4cb0-b5f6-010743c1e61a

Para apagar apenas os dados de Tracking mais antigos.

Se a necessidade é apagar os dados mais antigos e deixar apenas os registros do último mês, por exemplo, podemos usar a procedure dtasp_PurgeTrackingDatabase, que executa o comando DELETE. Essa procedure tem alguns parâmetros obrigatórios:

  • @nHours tinyint — Deleta todas as instancias executadas completamente mais antigas do que a soma dos parâmetros @nHours e @nDays.
  • @nDays tinyint — Deleta todas as instancias executadas completamente mais antiga do que a soma dos parâmetros @nHours e @nDays. O Intervalo padrão é de 1 dia.
  • @nHardDays tinyint — Todos os dados mais antigo do que esse intervalo será deletado, mesmo as instancias incompletas. O intervalo especificado nesse parâmetro deve ser maior do que o intervalo de tempo que você deseja manter os registros no banco.
  • @dtLastBackup — Data do ultimo backup, use o comando GetUTCDate(). Quando esse parametro é setado como nulo, os dados não serão deletados.

Agora como exemplo, vamos supor que queremos deletar todos os registros, (até as instancias incompletas) mais antigo do que 1 dia e duas horas, então deveremos executar o seguinte script:

–– Altere para o banco BizTalk Tracking.
USE BizTalkDTADb
GO

DECLARE @dtLastBackup DATETIME
SET @dtLastBackup = GetUTCDate()
EXEC dtasp_PurgeTrackingDatabase 2, 0, 1, @dtLastBackup

Para os ambientes de Produção, ou para casos em que não é possível fazer a manutenção manual, é recomendado habilitar o Job “DTA Purge and Archive (BizTalkDTADb)” no SQL Server Agent.

Postarei como configurar esse job num futuro próximo!

Até mais!

Seja o primeiro a comentar ;)

Postar um comentário

BizTalk 360

Visitas

Arquivo do blog