CORRECÇÃO: Você não pode acessar informações sobre mensagens nas mensagens de banco de dados ou faixa de MessageBox em seus arquivos no BizTalk Server 2004

Traduções deste artigo Traduções deste artigo
ID do artigo: 838454 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Você pode descobrir que você deseja acessar as mensagens controladas no banco de dados Microsoft BizTalk MessageBox ou em seus arquivos. A capacidade de enumerar a lista de mensagens e para recuperar contextual e carga dados sobre as mensagens individuais não foi fornecida no Microsoft BizTalk Server 2004.

Esse hotfix adiciona o novo objeto MessageArchive . O objeto MessageArchive expõe a capacidade de recuperar uma enumeração sobre o corpo de mensagem controlada no banco de dados MessageBox ou em um banco de dados padrão de arquivamento.

Observação Esse hotfix está incluído no Microsoft BizTalk Server 2004 Service Pack 1.

Resolução

Informações sobre o service pack

Para resolver esse problema, obtenha o service pack mais recente para o Microsoft BizTalk Server 2004. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
888751Como obter o service pack mais recente do BizTalk Server 2004

Informações sobre o hotfix

Um hotfix suportado está disponível no Microsoft. No entanto, esse hotfix destina-se a corrigir o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico. Esta correcção poderá submetida a testes adicionais. Portanto, se você não tiver sido gravemente afetado por esse problema, recomendamos que você aguarde a próxima atualização de software que contém esse hotfix.

Se o hotfix está disponível para download, há uma seção "Download de Hotfix disponível" na parte superior neste artigo da Base de dados de Conhecimento. Se esta seção não for exibida, contate o atendimento e suporte para obter o hotfix.

Observação Se ocorrerem problemas adicionais ou se qualquer solução de problemas é necessária, talvez você precise criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a questões de suporte adicionais e problemas que não se qualificam para esse hotfix específico. Para obter uma lista completa de números de telefone de suporte e Atendimento Microsoft ou para criar uma solicitação de serviço separada, visite o seguinte site:
http://support.microsoft.com/contactus/?ws=support
Observação O formulário "Download de Hotfix disponível" exibe os idiomas para os quais o hotfix está disponível. Se você não vir seu idioma, é porque um hotfix não está disponível para esse idioma.

Pré-requisitos

Não pré-requisitos são necessários

Requisitos de reinicialização

Não é necessário reiniciar o computador após aplicar esse hotfix

Informações sobre a substituição do hotfix

Esse hotfix não substitui outros hotfixes

Informações sobre o arquivo

A versão em inglês deste hotfix tem atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas no horário de universal coordenado (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário no item Data e hora no painel de controle.
   Date        Time    Version     Size       File name
   --------------------------------------------------------------------------------------
   08-Jul-2004  22:15  3.0.5320.0    144,896  Btshttpreceive.dll
   08-Jul-2004  22:15  3.0.5320.0  1,026,048  Btsmsgcore.dll
   08-Jul-2004  22:53  3.0.5320.0     32,768  Microsoft.biztalk.cachingservice.dll
   08-Jul-2004  22:50  3.0.5320.0    221,184  Microsoft.biztalk.flatfileextension.dll
   08-Jul-2004  22:48  3.0.5320.0    729,088  Microsoft.biztalk.globalpropertyschemas.dll
   08-Jul-2004  22:48  3.0.5320.0     69,632  Microsoft.biztalk.httptransport.dll
   08-Jul-2004  22:42  3.0.5320.0     77,824  Microsoft.biztalk.messageboxom.dll
   08-Jul-2004  22:50  3.0.5320.0     49,152  Microsoft.biztalk.messaging.dll
   08-Jul-2004  22:53  3.0.5320.0    217,088  Microsoft.biztalk.pipeline.dll
   08-Jul-2004  21:46                145,598  Msgboxlogic.sql
   08-Jul-2004  21:46                 12,158  Msgbox_tracking_schema.sql

Observação Devido às dependências do arquivo, o hotfix mais recente que contém esses arquivos também pode conter arquivos adicionais.

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".Esse problema foi corrigido no BizTalk Server 2004 Service Pack 1.

Mais Informações

Como arquivar dados de corpo de mensagem

Você pode referenciar o arquivo Microsoft.BizTalk.MessageBoxOM.dll para arquivar dados de corpo de mensagem nas tabelas Tracking_Spool1 e Tracking_Spool2 no banco de dados MessageBox. Para fazer isso, execute as seguintes etapas:
  1. Fazer referência ao arquivo Microsoft.BizTalk.MessageBoxOM.dll. O arquivo Microsoft.BizTalk.MessageBoxOM.dll está localizado no GAC (cache de assembly global). Não é possível adicionar uma referência a um componente que está localizado no GAC em projetos do Microsoft Visual Studio .NET 2003. Para fazer referência no projeto Visual Studio.NET 2003 arquivo Microsoft.BizTalk.MessageBoxOM.dll, use um dos seguintes métodos:
    • método 1: extrair o arquivo Microsoft.BizTalk.MessageBoxOM.dll do GAC

      Para extrair o arquivo Microsoft.BizTalk.MessageBoxOM.dll do GAC, execute o seguinte comando em um prompt de comando. Neste comando, DestinationPath representa um local de arquivo no disco rígido. Por exemplo, você pode usar o seguinte comando para extrair o arquivo Microsoft.BizTalk.MessageBoxOM.dll para a pasta que contém os arquivos para seu projeto Visual Studio.NET 2003:
      cópia %systemroot%\assembly\GAC\Microsoft.BizTalk.MessageBoxOM\3.0.1.0__31bf3856ad364e35\Microsoft.BizTalk.MessageBoxOM.dll DestinationPath
    • método 2: editar manualmente o arquivo de projeto do Visual Studio .NET 2003

      Para adicionar uma referência a um componente que está localizado no GAC, edite manualmente o arquivo de projeto do Visual Studio .NET 2003 em um editor de texto. Por exemplo, os arquivos .csproj e .btproj são arquivos de projeto. Adicione o seguinte exemplo de código ao elemento de referência no arquivo de projeto.
      Name = "Microsoft.BizTalk.MessageBoxOM"
      AssemblyName = "Microsoft.BizTalk.MessageBoxOM"
      HintPath = "<SystemRoot>\assembly\GAC\Microsoft.BizTalk.MessageBoxOM\3.0.1.0__31bf3856ad364e35\Microsoft.BizTalk.MessageBoxOM.dll"
  2. Crie um aplicativo de console no Visual Studio .NET 2003. Em seguida, adicione referências a componentes a seguir no aplicativo de console:
    • Microsoft.BizTalk.messageboxom.dll

      Observação Adicione uma referência para o arquivo Microsoft.biztalk.messageboxom.dll somente se você extraia o arquivo para um local no disco rígido na etapa 1.
    • \Microsoft 2004\Microsoft.BizTalk.Messaging.dll do BizTalk Server
    • \Microsoft 2004\Microsoft.BizTalk.Pipeline.dll do BizTalk Server
    • System.XML
  3. Adicione código para o aplicativo de console que lhe permite arquivar dados de corpo de mensagem. Em seguida, compile o aplicativo. Por exemplo, usar código semelhante o exemplo de código a seguir Microsoft Visual translation from VPE for Csharp.
    using System;
    using System.IO;
    using Microsoft.BizTalk.Message.Interop;
    using Microsoft.BizTalk.MessageBoxOM;
    using System.Collections;
    using System.Diagnostics;
    
    namespace ConsoleApplication1
    {
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    MessageArchive archive = new MessageArchive();
    archive.ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;database=BizTalkMsgboxDb;server=."
    
    foreach (IBaseMessage msg in archive.Messages)
    {
    int cnt = msg.PartCount;
    UInt64 lSize;
    bool fImplemented;
    msg.GetSize(out lSize, out fImplemented);
    //Trace.WriteLine("Message ID: " + msg.MessageID.ToString());
    //Trace.WriteLine("Message Size: " + lSize.ToString());
    Console.WriteLine("Message ID: " + msg.MessageID.ToString());
    Console.WriteLine("Message Size: " + lSize.ToString());
    String partName;
    IBaseMessagePart part = msg.GetPartByIndex(0, out partName);
    Stream data = part.Data;
    string contentType = part.ContentType;
    string charset = part.Charset;
    
    
    //byte[] arr = new byte[data.Length];
    //data.Read(arr, 0, (int)data.Length);
    //file.Write(arr, 0, (int)data.Length);
    
    FileStream file = new FileStream(@"<full path of where you want to store the tracked messages>\" + msg.MessageID + ".xml", FileMode.Create);
    
    byte[] arr = new byte[1024];
    int bytesRead = 0;
    while ( (bytesRead = data.Read(arr, 0, 1024) ) > 0) 
    {
    file.Write(arr, 0, bytesRead);
    if (bytesRead < 1024)
    break;
    }
    
    file.Close();
    
    }
    
    archive.Dispose(); 
    }
    }
    }
  4. Execute o aplicativo de console. Quando você executa o aplicativo de console, o aplicativo de console recupera dados de corpo de mensagem controlada da tabela inativa no banco de dados MessageBox. A tabela inativa é tabela Tracking_Spool1 ou a tabela Tracking_Spool2 . O objeto MessageArchive não é possível acessar a tabela ativa.

    Por padrão, a tabela Tracking_Spool1 é a tabela ativa. Portanto, nenhum dado é retornado na primeira vez que você execute o aplicativo de console. Para fazer Tracking_Spool2 tabela tabela ativa, execute o trabalho TrackingSpool_Cleanup_BizTalkMsgBoxDb no SQL Server.

    Observação Por padrão, o trabalho TrackingSpool_Cleanup_BizTalkMsgBoxDb não está habilitado. O trabalho TrackingSpool_Cleanup_BizTalkMsgBoxDb exclui dados de corpo de mensagem.

    Após executar o trabalho TrackingSpool_Cleanup_BizTalkMsgBoxDb, execute o aplicativo de console para arquivar dados de corpo do mensagem na tabela Tracking_Spool1 .

    Observação Porque o trabalho TrackingSpool_Cleanup_BizTalkMsgBoxDb limpa dados de corpo de mensagem do inativo, você deve executar o aplicativo de console antes de executar o trabalho TrackingSpool_Cleanup_BizTalkMsgBoxDb novamente,

    Por exemplo, execute estas etapas para arquivar dados de corpo de mensagem no banco de dados MessageBox:
    1. Estabelece uma agenda para arquivar dados de corpo de mensagem. Por exemplo, se você executar o trabalho TrackingSpool_Cleanup_BizTalkMsgBoxDb uma vez a cada duas semanas, você terá duas semanas de dados para dados de corpo de mensagem de controle.
    2. Execute o trabalho TrackingSpool_Cleanup_BizTalkMsgBoxDb. Na primeira vez que você executa esse trabalho, a tabela Tracking_Spool2 está marcada como tabela ativa. A tabela Tracking_Spool2 está vazia. Portanto, nenhum dado é perdido.
    3. Execute o aplicativo console para arquivar os dados de corpo de mensagem que é armazenados na tabela Tracking_Spool1 .
    4. Quando você deseja arquivar dados de corpo de mensagem novamente, execute o trabalho TrackingSpool_Cleanup_BizTalkMsgBoxDb. Este trabalho limpa os dados que está na tabela Tracking_Spool1 e marca a tabela Tracking_Spool1 como ativa.
    5. Execute o aplicativo console para arquivar os dados de corpo de mensagem que é armazenados na tabela Tracking_Spool2 .
    6. Repita as etapas 4e 4a acordo com para o agendamento que você estabelecer na etapa 4a.
    Para obter mais informações sobre o trabalho TrackingSpool_Cleanup_BizTalkMsgBoxDb, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    907661As tabelas Tracking_Spool1 ou Tracking_Spool2 no banco de dados BiztalkMsgBoxDb fique muito grandes no BizTalk Server 2004

Interfaces de objeto MessageArchive

O objeto MessageArchive implementa as seguintes interfaces:
    public int CommandTimeout
    • Descrição: Com esta interface, o usuário pode obter e definir o tempo limite está associado com as conexões SQL subjacentes.
    • condições de limite: O tempo limite deve ser maior ou igual a 0. O tempo limite máximo será uma hora. 0 indica um tempo limite infinito.
    • casos de erro: Valores inválidos irão gerar uma exceção ArgumentOutOfRangeException .

    public string ConnectionString
    • Descrição: Com esta interface, o usuário pode obter e definir a seqüência de conexão para o banco de dados base do arquivo morto.
    • condições de limite: A seqüência de caracteres não deve ser nula e não deve ser uma seqüência vazia. Depois de definir a conexão uma vez com êxito, você não pode redefinir a propriedade de conexão.
    • casos de erro: Uma seqüência de caracteres nula ou seqüência de tamanho (0) zero faz com que uma exceção de ArgumentException . Definindo a propriedade após já ter sido definido faz com que uma exceção InvalidOperationException . Se a seqüência de caracteres não for uma conexão válida, SQL gera uma exceção de conexão.

    public int BatchSize
    • Descrição: Com esta interface, o usuário pode obter e definir o tamanho de lotes de dados para recuperar do banco de dados. Esta ação impede que o BizTalk Server usem muita memória em qualquer momento. O valor padrão é 50.
    • condições de limite: O BatchSize deve ser maior ou igual a 0. BatchSize 0 significa que o objeto MessageArchive deve recuperar todos os dados, até o número máximo de correspondências. BatchSize máximo é 1000 porque ele não faz sentido para carregar mais do que na memória.
    • casos de erro: BatchSizes que estão fora do intervalo aceitável geram uma exceção ArgumentOutOfRangeException .

    public int MaxMatches
    • Descrição: Com esta interface, o usuário pode obter e definir o número máximo de mensagens que são recuperados para a enumeração. Essa interface difere BatchSize interface MaxMatches é o número total de mensagens antes do método MoveNext da enumeração retorna false.
    • condições de limite: MaxMatches deve ser maior ou igual a 0. Um valor de 0 significa recuperar todas as mensagens.
    • casos de erro: Se o valor de MaxMatches for menor que 0, é gerada uma exceção ArgumentOutOfRangeException .

    public DateTime From
    • Descrição: Com esta interface, o usuário pode filtrar o conjunto de mensagens que eles seriam deseja recuperar com base em um determinado intervalo de data e hora. A definição dessa propriedade indica que o objeto MessageArchive deve recuperar somente as mensagens que são publicadas em ou após a data e hora especificadas.
    • condições de limite: Se o tempo Until já tiver sido especificado, o tempo de deve ser igual ou antes do tempo Until.
    • casos de erro: Se o tempo de for posterior à hora de Until, é gerada uma exceção ArgumentException .

    public DateTime Until
    • Descrição: Com esta interface, o usuário pode filtrar o conjunto de mensagens que eles seriam deseja recuperar com base em um determinado intervalo de data e hora. A definição dessa propriedade indica o objeto MessageArchive somente deve recuperar mensagens que são publicadas em ou antes do tempo especificado.
    • condições de limite: Se o tempo de já tiver sido especificado, o tempo Until deve ser igual ou posterior à hora de.
    • casos de erro: Se o tempo Until for antes do tempo de, é gerada uma exceção ArgumentException .

    public IEnumerable Messages
    • Descrição: Com esta interface, o usuário pode recuperar uma interface que eles podem enumerar todas as mensagens. Uma enumeração é usada porque não há propriedade Count é fornecida.
    • condições de limite: Essa interface leva sem parâmetros.
    • casos de erro: Se a conexão ainda não tiver sido definida, é gerada uma exceção InvalidOperationException . Todos os outros erros são causados por problemas de conectividade SQL.
    • A enumeração de mensagens retorna objetos do tipo ArchivedMessage. Esses objetos podem ser convertidos em IBaseMessage interfaces. Para obter mais informações sobre IBaseMessage, consulte a documentação on-line do Microsoft BizTalk Server 2004.

Todas as seguintes funções ou métodos não são suportados pelo objeto MessageArchive e irão gerar exceções InvalidOperationException :
  • public void AddPart(string partName, IBaseMessagePart part, [MarshalAs(UnmanagedType.Bool)] bool bBody)
  • public IBaseMessagePart GetPart(string partName)
  • public void RemovePart(string partName)
  • public Exception GetErrorInfo()
  • public void SetErrorInfo(Exception errInfo)
Algumas novas propriedades que você pode usar no BizTalk Server soluções estão também incluídas nesse hotfix:
  • A propriedade AdapterReceiveCompleteTime é preenchida quando uma mensagem é recebida do adaptador e antes do recebimento pipeline começa a processar a mensagem.
  • A propriedade AdapterTransmitBeginTime é preenchida antes de inicia o adaptador de transmitir a mensagem.
  • A propriedade AdapterTransmitCompleteTime é preenchida após o adaptador transmite a mensagem com êxito. Essa propriedade não tem suporte para MSMQT (BizTalk Message Queuing adaptador).
Essas propriedades pertencem ao seguinte espaço para nome: digite
http://schemas.microsoft.com/BizTalk/2003/messagetracking-properties
tem todas as três propriedades VT_DATE (ou DateTime).

Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684Descrição da terminologia padrão que é usada para descrever as atualizações de software

Propriedades

ID do artigo: 838454 - Última revisão: sexta-feira, 29 de dezembro de 2006 - Revisão: 4.2
A informação contida neste artigo aplica-se a:
  • Microsoft BizTalk Server 2004 Standard Edition
  • Microsoft BizTalk Server 2004 Partner Edition
  • Microsoft BizTalk Server 2004 Enterprise Edition
  • Microsoft BizTalk Server 2004 Developer Edition
Palavras-chave: 
kbmt kbautohotfix kbbiztalk2004-2006swept kbbiztalk2004sp1fix kbbiztalk2004presp1fix kbbug kbfix kbhotfixserver kbqfe KB838454 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 838454

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com