2010-03-29 4 views
6

Мне было интересно, если кто-то знает, где я могу видеть данные приостановленного сообщения в базе данных biztalk.Biztalk приостановил сообщения в базе данных

Мне нужно это, потому что из-за проверки было приостановлено около 900 сообщений, и мне нужно отредактировать их все, возобновление невозможно.

Я знаю, что информация о приостановленных сообщениях показана в BizTalkMsgBoxDb в таблице InstancesSuspended и что различные части каждого сообщения показаны в таблице MessageParts. Однако я не могу найти таблицу, в которой хранятся фактические данные.

Кто-нибудь знает, где это можно сделать?

ответ

1

I нашел способ сделать это, нет никакой ошибки в моей системе, когда я просто хочу их прочитать.

Как я это сделал, используя метод «CompressionStreams» с помощью Microsoft.Biztalk.Pipeline.dll.

Способ сделать это:

public static Stream getMsgStrm(Stream stream) 
    { 
     Assembly pipelineAssembly = Assembly.LoadFrom(string.Concat(@"<path to dll>", @"\Microsoft.BizTalk.Pipeline.dll")); 
     Type compressionStreamsType = pipelineAssembly.GetType("Microsoft.BizTalk.Message.Interop.CompressionStreams", true); 
     return (Stream)compressionStreamsType.InvokeMember("Decompress", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, null, new object[] { (object)stream }); 
    } 

Затем я связываю с моей базе данных, заполнить набор данных и поток из данных в строке, код:

 String SelectCmdString = "select * from dbo.Parts"; 
     SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(SelectCmdString, "<your connectionstring">); 
     DataSet myDataSet = new DataSet(); 
     mySqlDataAdapter.Fill(myDataSet, "BodyParts"); 

     foreach (DataRow row in myDataSet.Tables["BodyParts"].Rows) 
     { 
      if (row["imgPart"].GetType() != typeof(DBNull)) 
      { 
       SqlBinary binData = new SqlBinary((byte[])row["imgPart"]); 
       MemoryStream stm = new MemoryStream(binData.Value); 
       Stream aStream = getMsgStrm(stm); 
       StreamReader aReader = new StreamReader(aStream); 

       string aMessage = aReader.ReadToEnd(); 

       //filter msg 
       //write msg 
      } 
     } 

Затем я пишу каждую строку к соответствующему «txt» или «xml» в зависимости от того, что вы хотите, вы также можете отфильтровать определенные сообщения с регулярным выражением и т. д.

Надеюсь, это поможет любому, это точно, как помогло мне.

Привет

0

Это более чем вероятно не поддерживается Microsoft. Не рискуйте завинчивать свою систему. Если у вас есть необходимость в редактировании и повторной отправке, его необходимо встроить в оркестровку. В противном случае, вам лучше всего использовать WMI, чтобы написать сценарий для:

  1. вытащить все приостановленные сообщения
  2. прекратить их
  3. редактировать их
  4. повторно их
+0

Так почему отрицательный счет? Мне было бы интересно узнать, что вы думаете. –

+0

Я думаю, что, когда он ответил, что его первая строка была нацелена на вас, «нет никакой ошибки в моей системе, когда я просто хочу их прочитать» ... – Nix

+0

+1 для @ChrisLoris. Совет по использованию WMI и прекращению приостановленных сообщений звучит. Другая часть рекомендации, возможно, более формально сформулирована так: «Microsoft не поддерживает прямой доступ к базе данных BizTalk. Будущие версии BizTalk могут изменить схему и т. Д.». Имея это в виду, учтите, что данное решение может потребоваться изменить, если установлена ​​новая производственная версия или даже патч. –

0

вы можете найти его с помощью инструмента HAT вам просто нужно указать схему, порт и точную дату с точным временем и он покажет вам сообщения правой кнопкой мыши на желаемому и сохранить ,

1

Извлечение сообщение от взвешенных экземпляров

Сценарий:

BizTalk 2010 и SQL 2008 R2 является средой, которую мы использовали передние этот сценарий.

У вас возникли проблемы с некоторыми интеграциями, 1500 приостановленных экземпляров внутри BizTalk, и вам нужно отправить фактические сообщения клиенту, а затем вы не хотите вручную избавить это от BizTalk Administrator.

Существует множество блогов и интернет-ресурсов, указывающих на vbs, скрипты powershell, как это сделать, но я использовал BizTalk Terminator для решения таких сценариев.

Как вы теперь BizTalk терминатор задавать вам 3 вопроса, когда инструмент начинает

базы данных

I.1.All BizTalk подкреплены? II.2. Все экземпляры компьютеров остановлены? III.3. Агенты BizTalk SQL прекращены? Это нормально, когда вы собираетесь что-то менять в базах данных BizTalk, но это не то, что вы собираетесь делать в этом сценарии, вы используете инструмент только для чтения из баз данных BizTalk. Но вы всегда должны иметь резервные копии от баз данных BizTalk.

Вы всегда несете ответственность за то, что делаете, но когда мы использовали эти инструменты так, как я описываю, у нас нет проблем с этим сценарием.

Итак, после того, как вы запустите инструмент Terminator, нажмите «Да» на 3 вопроса (вам не нужно ничего останавливать в этом сценарии), затем подключитесь к правильной среде, сначала сделайте это в своей тестовой среде, чтобы вы чувствовали себя комфортно с этим сценарием , следующим шагом будет выбор задачи терминатора, выберите Count Instances (и сохраните сообщения), после этого вы должны заполнить параметр TAB с помощью правильного serviceClass и Hostname и установить SaveMessages в True и последний установить FilesaveFullPath в нужную папку, которую вы хотите сохранить сообщения.

Затем вы можете нажать кнопку «Выполнить», и в зависимости от размера и сколько времени потребуется некоторое время, после этого разъединитель Terminator ничего не делает.

Вы должны теперь, если вы указали правильные значения в параметре TAB, есть сохраненные сообщения внутри папки FilesaveFullPath.

Скачать BizTalk терминатор с этого адреса:

http://www.microsoft.com/en-us/download/details.aspx?id=2846

Смежные вопросы