CORRECÇÃO: É não é possível aceder a informações sobre mensagens nas mensagens de base de dados ou faixa de MessageBox in os arquivos do BizTalk Server 2004

Traduções de Artigos Traduções de Artigos
Artigo: 838454 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Poderá encontrar o que pretende aceder as mensagens registadas na base de dados Microsoft BizTalk MessageBox ou os arquivos. Não foi fornecida a capacidade de enumerar sobre a lista de mensagens e para obter contexto e payload de dados sobre as mensagens individuais do Microsoft BizTalk Server 2004.

Esta correcção adiciona o novo objecto MessageArchive . O objecto MessageArchive expõe a capacidade de obter uma enumeração sobre os corpos de mensagens registadas na base de dados MessageBox ou numa base de dados arquivo personalizadas.

Nota Esta correcção está incluída no Microsoft BizTalk Server 2004 Service Pack 1.

Resolução

Informações sobre Service Packs

Para resolver este problema, obtenha o service pack mais recente do Microsoft BizTalk Server 2004. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
888751Como obter o service pack mais recente do BizTalk Server 2004

Informações sobre a correcção

Está disponível a partir da Microsoft uma correcção suportada. No entanto, esta correcção destina-se a corrigir o problema descrito neste artigo. Aplique esta correcção apenas em sistemas que tenham este problema específico. Esta correcção poderá submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde pela próxima actualização de software que contenha esta correcção.

Se a correcção está disponível para transferência, existe uma secção "denominada transferência de correcção disponível" na parte superior deste artigo da base de dados de conhecimento. Se esta secção não for apresentado, contacte o serviço de cliente do Microsoft e suporte para obter a correcção.

Nota Se ocorram problemas adicionais ou se for necessária qualquer resolução de problemas, poderá ter de criar um pedido de assistência separado. Os custos normais do suporte serão aplicados a problemas adicionais e questões de suporte que não se enquadrem esta correcção específica. Para obter uma lista completa dos números de telefone do suporte de cliente do Microsoft ou para criar um pedido serviço separado, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota O formulário "Transferência de correcção disponível" apresenta os idiomas para a qual a correcção está disponível. Se não vir o idioma, é porque uma correcção não está disponível para esse idioma.

Pré-requisitos

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

Requisito de reinício

Não é necessário reiniciar o computador depois de aplicar esta correcção

Informações sobre substituição de correcções

Esta correcção não substitui quaisquer outras correcções

Informações do ficheiro

A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas na hora universal coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário no item Data e hora no painel de controlo.
   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

Nota Devido a dependências de ficheiros, a correcção mais recente que contenha estes ficheiros também poderão conter ficheiros adicionais.

Ponto Da Situação

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

Mais Informação

Como arquivar dados de corpo de mensagem

Pode referenciar o ficheiro Microsoft.BizTalk.MessageBoxOM.dll para arquivar dados nas tabelas Tracking_Spool1 e Tracking_Spool2 na base de dados MessageBox corpo das mensagens. Para o fazer, siga estes passos:
  1. Referência de ficheiro Microsoft.BizTalk.MessageBoxOM.dll. O ficheiro Microsoft.BizTalk.MessageBoxOM.dll está localizado na cache de assemblagem global (GAC). Não é possível adicionar uma referência a um componente que está localizado na GAC em projectos do Microsoft Visual Studio .NET 2003. Para referenciar o ficheiro Microsoft.BizTalk.MessageBoxOM.dll num projecto do Visual Studio .NET 2003, utilize um dos seguintes métodos:
    • método 1: extrair o ficheiro Microsoft.BizTalk.MessageBoxOM.dll de GAC

      Para extrair o ficheiro Microsoft.BizTalk.MessageBoxOM.dll GAC, execute o seguinte comando numa linha de comandos. Este comando, DestinationPath representa uma localização de ficheiro no disco rígido. Por exemplo, pode utilizar o seguinte comando para extrair o ficheiro Microsoft.BizTalk.MessageBoxOM.dll para a pasta que contém os ficheiros para o projecto do 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 ficheiro de projecto do Visual Studio .NET 2003

      Para adicionar uma referência a um componente que está localizado na GAC, edite manualmente o ficheiro de projecto do Visual Studio .NET 2003 num editor de texto. Por exemplo, os ficheiros .csproj e .btproj são ficheiros de projecto. Adicionar o seguinte exemplo de código ao elemento de referência no ficheiro de projecto.
      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. Criar uma aplicação de consola no Visual Studio .NET 2003. Em seguida, adicione referências aos seguintes componentes da aplicação de consola:
    • Microsoft.BizTalk.messageboxom.dll

      Nota Adicione uma referência para o ficheiro Microsoft.biztalk.messageboxom.dll apenas se extrair o ficheiro para uma localização no disco rígido no passo 1.
    • \Microsoft BizTalk Server 2004\Microsoft.BizTalk.Messaging.dll
    • \Microsoft BizTalk Server 2004\Microsoft.BizTalk.Pipeline.dll
    • System.XML
  3. Adicione código à aplicação de consola que lhe permite arquivar dados de corpo da mensagem. Em seguida, compile a aplicação. Por exemplo, utilize código semelhante ao exemplo de código Microsoft Visual C# seguinte.
    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 a aplicação de consola. Quando executa a aplicação da consola, a aplicação de consola obtém dados de corpo de mensagem controlada da tabela na base de dados MessageBox inactiva. A tabela inactiva é a tabela Tracking_Spool1 ou tabela Tracking_Spool2 . O objecto MessageArchive não é possível aceder à tabela activa.

    Por predefinição, a tabela Tracking_Spool1 é a tabela activa. Por conseguinte, não dados são devolvidos pela primeira vez que execute a aplicação da consola. Para tornar Tracking_Spool2 tabela tabela activa, executar a tarefa TrackingSpool_Cleanup_BizTalkMsgBoxDb no SQL Server.

    Nota Por predefinição, a tarefa TrackingSpool_Cleanup_BizTalkMsgBoxDb não está activada. A tarefa TrackingSpool_Cleanup_BizTalkMsgBoxDb elimina dados corpo da mensagem.

    Depois de executar a tarefa TrackingSpool_Cleanup_BizTalkMsgBoxDb, execute a aplicação da consola para arquivar dados de corpo da mensagem na tabela Tracking_Spool1 .

    Nota Uma vez que a tarefa TrackingSpool_Cleanup_BizTalkMsgBoxDb limpa dados corpo da mensagem a partir de inactivo, tem de executar a aplicação de consola antes de executar a tarefa TrackingSpool_Cleanup_BizTalkMsgBoxDb novamente,

    Por exemplo, siga estes passos para arquivar dados de corpo de mensagem na base de dados MessageBox:
    1. Estabelecer uma agenda para arquivar dados de corpo de mensagem. Por exemplo, se executar a tarefa TrackingSpool_Cleanup_BizTalkMsgBoxDb uma vez a cada duas semanas, terá duas semanas de dados para dados corpo das mensagens de rastreio.
    2. Execute a tarefa TrackingSpool_Cleanup_BizTalkMsgBoxDb. A primeira vez que executar esta tarefa, a tabela Tracking_Spool2 está marcada como tabela activa. A tabela Tracking_Spool2 está vazia. Por conseguinte, perdem-se sem dados.
    3. Execute a aplicação da consola para arquivar os dados do corpo de mensagem que é armazenados na tabela Tracking_Spool1 .
    4. Quando pretender arquivar dados de corpo de mensagem novamente, execute a tarefa TrackingSpool_Cleanup_BizTalkMsgBoxDb. Esta tarefa elimina os dados que está na tabela Tracking_Spool1 e marca a tabela Tracking_Spool1 como activa.
    5. Execute a aplicação da consola para arquivar os dados do corpo de mensagem que é armazenados na tabela Tracking_Spool2 .
    6. Repita os passos 4a 4e de acordo com a agenda que estabelecer no passo 4a.
    Para obter mais informações sobre a tarefa TrackingSpool_Cleanup_BizTalkMsgBoxDb, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
    907661Tabelas Tracking_Spool1 ou Tracking_Spool2 a base de dados BiztalkMsgBoxDb ficam muito grandes no BizTalk Server 2004

Interfaces de objecto MessageArchive

O objecto MessageArchive implementa as seguintes interfaces:
    public int CommandTimeout
    • Descrição: Com esta interface, o utilizador possa obter e definir o tempo limite associado com as ligações de SQL subjacentes.
    • condições de limite: O tempo limite deve ser mais do que ou igual a 0. O limite de tempo máximo será uma hora. 0 indica um tempo de espera infinito.
    • casos de erro: Valores inválidos irão gerar uma excepção ArgumentOutOfRangeException .

    public string ConnectionString
    • Descrição: Com esta interface, o utilizador pode obter e definir a cadeia de ligação para a base de dados subjacente do arquivo.
    • condições de limite: A cadeia não pode ser nula e não pode ser uma cadeia vazia. Depois de definir a ligação de uma vez com êxito, não pode repor a propriedade de ligação.
    • casos de erro: Uma cadeia nula ou zero cadeia de comprimento (0) faz com que uma excepção ArgumentException . Definir a propriedade depois de já tiver sido definido faz com que uma excepção InvalidOperationException . Se a cadeia não for uma ligação válida, o SQL gera uma excepção de ligação.

    public int BatchSize
    • Descrição: Com esta interface, o utilizador pode obter e definir o tamanho de secções de dados para obter da base de dados. Esta acção impede que o BizTalk Server utilizem demasiada memória em simultâneo. O valor predefinido é 50.
    • condições de limite: O BatchSize tem de ser mais do que ou igual a 0. BatchSize de 0 significa que o objecto MessageArchive deve obter todos os dados, mais o número máximo de correspondências. BatchSize máximo é 1000 porque não faz sentido carregar mais do que na memória.
    • casos de erro: BatchSizes que estão fora do intervalo aceitável geram uma excepção ArgumentOutOfRangeException .

    public int MaxMatches
    • Descrição: Com esta interface, o utilizador pode obter e definir o número máximo de mensagens que são obtidos para a enumeração. Esta interface difere BatchSize interface nesse MaxMatches é o número total de mensagens antes do método MoveNext da enumeração devolve FALSO.
    • condições de limite: MaxMatches tem de ser mais do que ou igual a 0. Um valor de 0 significa obter todas as mensagens.
    • casos de erro: Se o valor de MaxMatches é menor que 0, é gerada uma excepção ArgumentOutOfRangeException .

    public DateTime From
    • Descrição: Com esta interface, o utilizador pode filtrar o conjunto de mensagens que teria pretendem obter com base num determinado intervalo de data e hora. Definir esta propriedade indica que o objecto MessageArchive só deve obter mensagens que são publicadas em ou após a data e hora especificada.
    • condições de limite: Se o tempo de Until já foi especificado, o tempo de tem de ser igual para ou antes da hora UNTIL.
    • casos de erro: Se a hora de for posterior à hora Until, é gerada uma excepção ArgumentException .

    public DateTime Until
    • Descrição: Com esta interface, o utilizador pode filtrar o conjunto de mensagens que teria pretendem obter com base num determinado intervalo de data e hora. Definir esta propriedade indica o objecto MessageArchive só deve obter mensagens que são publicadas no ou antes da hora especificada.
    • condições de limite: Se já tiver sido especificado o tempo de, a hora Until tem de ser igual a ou depois da hora de.
    • casos de erro: Se o tempo de Until antes da hora de, uma excepção ArgumentException é gerada.

    public IEnumerable Messages
    • Descrição: Com esta interface, o utilizador pode obter uma interface podem enumerar todas as mensagens sobre. Uma enumeração é utilizada porque não é fornecida nenhuma propriedade de contagem .
    • condições de limite: Esta interface utiliza não parâmetros.
    • casos de erro: Se ainda não foi definida a ligação, é gerada uma excepção InvalidOperationException . Todos os outros erros são provocados por problemas de conectividade SQL.
    • A enumeração de mensagens devolve objectos do tipo ArchivedMessage. Estes objectos podem ser convertidos para IBaseMessage interfaces. Para obter mais informações sobre IBaseMessage, consulte a documentação online do Microsoft BizTalk Server 2004.

Todas as seguintes funções ou métodos não são suportados pelo objecto MessageArchive e irão gerar InvalidOperationException excepções:
  • 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 pode utilizar no servidor BizTalk soluções estão também incluídas nesta correcção:
  • A propriedade AdapterReceiveCompleteTime é preenchida quando é recebida uma mensagem do adaptador e antes da recepção tubagem começa a processar a mensagem.
  • A propriedade AdapterTransmitBeginTime é preenchida antes de inicia a placa de transmitir a mensagem.
  • A propriedade AdapterTransmitCompleteTime é preenchida depois da placa com êxito transmite a mensagem. Esta propriedade não é suportada para a Colocação de mensagens em fila adaptador BizTalk mensagem (MSMQT).
Estas propriedades pertencem ao espaço de nomes seguinte:
http://schemas.microsoft.com/BizTalk/2003/messagetracking-properties
tem todos os três propriedades escreva VT_DATE (ou DateTime).

Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
824684Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft

Propriedades

Artigo: 838454 - Última revisão: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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