Я задавался вопросом, знает ли кто-то, где я вижу данные приостановленного сообщения в biztalk базе данных.
Мне нужно это, потому что приблизительно 900 сообщений были приостановлены из-за проверки, и я должен отредактировать всех их, возобновление не возможно.
Я знаю, что в информации приостановленных сообщений показывают BizTalkMsgBoxDb
в таблице InstancesSuspended
и что различные части каждого сообщения показывают в таблице MessageParts
. Однако я не могу найти таблицу, где фактические данные хранятся.
У кого-либо есть какая-либо идея, где это может быть сделано?
Я нашел способ сделать это, моя система не испортится, когда я просто хочу их прочитать.
Я сделал это с помощью метода 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». "в зависимости от того, что вы хотите, вы также можете отфильтровать определенные сообщения с помощью регулярных выражений и т. д.
Надеюсь, это поможет кому-нибудь, это чертовски помогло мне.
Приветствую
Более чем вероятно, что это не поддерживается Microsoft. Не рискуйте испортить свою систему. Если у вас есть необходимость в редактировании и повторной отправке, это должно быть встроено в оркестровку. В противном случае, лучше всего использовать WMI для написания сценария, который будет:
вы можете найти его с помощью инструмента HAT, вам просто нужно указать схему, порт и точную дату с точным временем, и он покажет вам сообщения, щелкните правой кнопкой мыши нужное и сохраните.