BizTalk Server - ntxtTransportDict Biztalk suspended queue

This is Interesting: Free IT Magazines  
Home > Archive > BizTalk Server > February 2004 > ntxtTransportDict Biztalk suspended queue





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author ntxtTransportDict Biztalk suspended queue
Russ

2004-02-08, 8:39 am

I have seen several questions posted around the internet about this,
but no answers. Here is our situation:

1. We are trying to build a central web site (in ASP.NET) that queries
our LOAD BALANCED biztalk servers to gather the items in the
cs_SuspendedQ table and display them to the user.
2. In addition to the other fields, we need to display the actual
message, which can be found in the ntxtTransportDict field; however,
it is compressed using a compression utility that we are unaware of
(it seems nobody is aware of it except Lee below)...

We attempted to query the table directly and access this field.
However, as stated below by Lee, it is compressed, and we can't
de-compress it. Microsoft recommends that we don't directly access
this data, but rather, use their "interchange" component (or in our
case, the .NET IInterchange component). However, this component must
be executed on the BizTalk server itself. The way to do it remotely is
via DCOM. However, since we have LOAD BALANCED biztalk servers, we
would need to install 2 versions of the DCOM component on our web
server (one for each Biztalk server), then call each to concatenate
together an entire picture of all records. This is obviously not
possible, because you can't install multiple versions of the same DCOM
component.

It seems that the easist method from an architecture standpoint is to
directly access the data in the table (without installing any Biztalk
components on our web server). However, Microsoft seems to be keeping
a lid on how to read the data in the ntxtTransportDict field, and
recommends using their component.

However, we can't use the component because we are in a load-balanced
environment. So, what is the approach we should use?

Recap:
1. How do we decompress and read the ntxtTransportDict field?
2. If not, how do we access this data on two load balanced servers
from our web server?

thanks
Please post the reply to this group! The email address listed is for
SPAM only.

russ

---------------
From: Lee Graber [msft] (leegr@online.microsoft.com)
Subject: Re: Suspended Queue database table "cs_SuspendedQ"
Date: 2002-11-18 19:36:05 PST


Couple of points.

First, the data that is streamed into that field is not just the
document, it is the entire dictionary, which includes the properties
for the
document. Now you would say, well I could just create a dictionary
object
and use the IPersistStream::Load method to create the dictionary and
then
just read the "working_data" field to get the data. Nope, not that
easy. We
compress the data before streaming it onto the database. So first you
need
to decompress the data and then you need to use that stream to load
the
dictionary, then you need to read the working_data from the
dictionary.

Second, regardless of what I talk about above, triggers are not
supported against our database. If you add a trigger to one of our
tables,
then you might mess up some of the logic if we use sql variables like
@@ROWCOUNT which we do use sometimes, so please don't write triggers
against
our tables.

In general, I recommend using WMI to listen to the suspendedQ event,
then
use the IInterchange interface to read the data for that message (we
do
everything I describe above) and then send the message via SMTP to
your
customer (perhaps using bts .

HTH
Lee
Nick Malik

2004-02-08, 8:39 am

different idea: do this remotely by setting up a web service on each of the
Biztalk servers that calls the COM component, retrieves the entire document
from the database, and then returns it in the SOAP response message. Your
web application calls the web service, which is load balanced, but returns
the entire document from whichever server it hits.

You CAN set up the same web service on more than one web server.

--- Nick

"Russ" <brutusocrates@yahoo.com.sg> wrote in message
news:2488f8fd.0402031307.2002859c@posting.google.com...
> I have seen several questions posted around the internet about this,
> but no answers. Here is our situation:
>
> 1. We are trying to build a central web site (in ASP.NET) that queries
> our LOAD BALANCED biztalk servers to gather the items in the
> cs_SuspendedQ table and display them to the user.
> 2. In addition to the other fields, we need to display the actual
> message, which can be found in the ntxtTransportDict field; however,
> it is compressed using a compression utility that we are unaware of
> (it seems nobody is aware of it except Lee below)...
>
> We attempted to query the table directly and access this field.
> However, as stated below by Lee, it is compressed, and we can't
> de-compress it. Microsoft recommends that we don't directly access
> this data, but rather, use their "interchange" component (or in our
> case, the .NET IInterchange component). However, this component must
> be executed on the BizTalk server itself. The way to do it remotely is
> via DCOM. However, since we have LOAD BALANCED biztalk servers, we
> would need to install 2 versions of the DCOM component on our web
> server (one for each Biztalk server), then call each to concatenate
> together an entire picture of all records. This is obviously not
> possible, because you can't install multiple versions of the same DCOM
> component.
>
> It seems that the easist method from an architecture standpoint is to
> directly access the data in the table (without installing any Biztalk
> components on our web server). However, Microsoft seems to be keeping
> a lid on how to read the data in the ntxtTransportDict field, and
> recommends using their component.
>
> However, we can't use the component because we are in a load-balanced
> environment. So, what is the approach we should use?
>
> Recap:
> 1. How do we decompress and read the ntxtTransportDict field?
> 2. If not, how do we access this data on two load balanced servers
> from our web server?
>
> thanks
> Please post the reply to this group! The email address listed is for
> SPAM only.
>
> russ
>
> ---------------
> From: Lee Graber [msft] (leegr@online.microsoft.com)
> Subject: Re: Suspended Queue database table "cs_SuspendedQ"
> Date: 2002-11-18 19:36:05 PST
>
>
> Couple of points.
>
> First, the data that is streamed into that field is not just the
> document, it is the entire dictionary, which includes the properties
> for the
> document. Now you would say, well I could just create a dictionary
> object
> and use the IPersistStream::Load method to create the dictionary and
> then
> just read the "working_data" field to get the data. Nope, not that
> easy. We
> compress the data before streaming it onto the database. So first you
> need
> to decompress the data and then you need to use that stream to load
> the
> dictionary, then you need to read the working_data from the
> dictionary.
>
> Second, regardless of what I talk about above, triggers are not
> supported against our database. If you add a trigger to one of our
> tables,
> then you might mess up some of the logic if we use sql variables like
> @@ROWCOUNT which we do use sometimes, so please don't write triggers
> against
> our tables.
>
> In general, I recommend using WMI to listen to the suspendedQ event,
> then
> use the IInterchange interface to read the data for that message (we
> do
> everything I describe above) and then send the message via SMTP to
> your
> customer (perhaps using bts .
>
> HTH
> Lee



Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com