by community-syndication | Jun 20, 2007 | BizTalk Community Blogs via Syndication
Check out this new video on Channel 9 where James Conard talks with John Shewchuk and Dennis Pilarinos about BizTalk Services. John and Dennis quickly explain BizTalk Services by discussing the challenges with building applications today. Dennis also shows four demos of BizTalk Services and then drops into Visual Studio along the way to show the programming model.
Cheers,
Kris
by community-syndication | Jun 20, 2007 | BizTalk Community Blogs via Syndication
Simon an architect I work with was talking to a developer this morning. The conversation went as so
Simon: Are you sure you want to use FTP to transfer this data I’m not sure it will be fast enough
Developer: Well FTP is faster than TCPIP
Simon (to himself): I have now entered the twilight zone
by community-syndication | Jun 19, 2007 | BizTalk Community Blogs via Syndication
Office 2007 users want to see something cool? Save out a word 2007 .docx format, rename the file to have a .zip extension, and then crack it open. How cool is that?
You can read more here http://msdn2.microsoft.com/en-us/library/aa338205.aspx
by community-syndication | Jun 19, 2007 | BizTalk Community Blogs via Syndication
————————————-
Addendum – June 22 2007: Under absolutely NO circumstances should you modify the data model of the BizTalk databases in any way. You should only optimize your own application databases.
————————————-
I have seen this issue in many places, which still surprises me because there are a lot of blog entries about this. For what it’s worth, here’s one more.
Scenario: BizTalk solution makes moderate to heavy use of SQL adapter in calling stored procedures in a database.
Problem: SQL server shows many blocking (perhaps deadlocking) SPIDs, most of which are owned by the BizTalk host instance account.
Factors:
- The longer the procedure takes to execute, the worse off you are
- Big tables, poor logic, bad indexes, bad db maintenance, disk contention etc.
- The more concurrent procedure executions the worse off you are
- short polling interval
- multiple ports
- multiple host instances
Diagnosing:
- Enterprise Manager or Management Studio can give some insight to active and blocking spids (check to see who owns the blocking spid and use dbcc inputbuffer to see the sql it is executing)
- Try using sp_who,sp_who2,and sp_who3, they may give you lots of insight
- Call MS PSS (or download pssdiag for yourself from the MS download site) and have them configure a pssdiag trace for you. Look especially closely at the blocker output and the profiler trace. Use rml.exe (read80trace) to generate a report of the “worst offenders” sql scripts or procedures.
Fixes:
- As per documentation, don’t use T-SQL transactions in your proc. The SQL Adapter already has this all wrapped up in a distributed transaction so relax!
- As per documentation, you can try setting the transaction isolation level to READ COMMITTED, or perhaps REPEATABLE READ. If you are running SERIALIZABLE that is a great way to tank performance and cause blocking.
- Speed up the procs (Archive, purge, index, create views, run db maintenance, buy a big SAN, whatever. The locks won’t kill you if they don’t last)
- Don’t go silly with coarse locking hints. Keep your lock few in number and small in granuarity. If you must manually lock, then please read up on the READPAST hint – especially for queue or “trigger” tables. (Thanks to Kunjal K for this hint)
- Reduce concurrency – You can try lengthening your polling interval or reducing the number of host instances that run that port.
Didn’t find what you were looking for? Try one of these:
- Known SQL Adapter Issues
- How to resolve a deadlock
- Understanding Isolation Levels
- Contact me through comment below
Is there something that I can do to make this blog more helpful to you?
I welcome your feedback!
by community-syndication | Jun 19, 2007 | BizTalk Community Blogs via Syndication
This will be the first of many blog postings on this new MSDN blog site. I’ll start off with a bunch of BizTalk, SQL, and .NET stuff. I have no idea where it will go from there, but I’ll try to practice all of my lessons learned from my previous blog and keep the community happy as much as is possible. (I recommend reading the Automatic Account Creation post for BizTalk. By far, it was my most popular entry.
Thanks for stopping by, and please, send requests if you have them.
by community-syndication | Jun 19, 2007 | BizTalk Community Blogs via Syndication
I’ve made the switch over to Microsoft Consulting Services from my previous employer, so my blog will be moving!
Please check out my new blog at http://blogs.msdn.com/neilth
by community-syndication | Jun 19, 2007 | BizTalk Community Blogs via Syndication
Back on the old blog, I posted about creating web services for BizTalk that accepted generic XML. In one of my current projects, a similar scenario came up. We have a WSDL that we must conform to, but wanted to accept generic content and validate AFTER the message reaches BizTalk.
Our SAP system will […]
by community-syndication | Jun 18, 2007 | BizTalk Community Blogs via Syndication
A flat file schema can be configured to generate empty elements for empty content
– using the “Generate Empty Nodes” option.
It seems that at runtime, the flat file dissasembler can generate “<foo></foo>”
for these empty nodes in cases where “Validate Instance…”
in the IDE would have generated “<foo/>”.
Where this can cause pain is if you receive a message like: “<foo><bar></bar></foo>”
into your orchestration, and then do a series of assignments like:
xmlDocVariable = myMessage;
// xmlDocVariable2 initialized because xmlDocVariable is needed for other things...
xmlDocVariable2.LoadXml(xmlDocVariable.OuterXml);
myMessage2 = xmlDocVariable2;
At this point, myMessage2 is going to be the serialized representation of xmlDocVariable2.
By default, you will now get:
<foo>
..<bar>
..</bar>
</foo>
Notice you now have carriage returns, line feeds, and spaces (shown here as periods)
involved. Depending on how you now go after /foo/bar, this can be bad (i.e.
you won’t get empty content when you might expect it.) You can avoid this
behavior by doing:
xmlDocVariable2.LoadXml(xmlDocVariable.OuterXml);
xmlDocVariable2.PreserveWhitespace = true;
myMessage2 = xmlDocVariable2;
Thanks to Tomas and Carlos for
setting me straight on PreserveWhitespace – I was trying to set it before the
call to LoadXml, and this doesn’t work. Never a dull day in BizTalk land…
The documentation
for PreserveWhitespace is a little strange. This functionality would seem
to be better represented as parameters to Load/Save, rather than as a property…
“If PreserveWhitespace is true before Load or LoadXml is called, white
space nodes are preserved; otherwise, if this property is false, significant white
space is preserved, white space is not. If PreserveWhitespace is true before
Save is called, white space in the document is preserved in the output; otherwise,
if this property is false, XmlDocument auto-indents the output.”
by community-syndication | Jun 18, 2007 | BizTalk Community Blogs via Syndication
A flat file schema can be configured to generate empty elements for empty content
– using the “Generate Empty Nodes” option.
It seems that at runtime, the flat file dissasembler can generate “<foo></foo>”
for these empty nodes in cases where “Validate Instance…”
in the IDE would have generated “<foo/>”.
Where this can cause pain is if you receive a message like: “<foo><bar></bar></foo>”
into your orchestration, and then do a series of assignments like:
xmlDocVariable = myMessage;
// xmlDocVariable2 initialized because xmlDocVariable is needed for other things...
xmlDocVariable2.LoadXml(xmlDocVariable.OuterXml);
myMessage2 = xmlDocVariable2;
At this point, myMessage2 is going to be the serialized representation of xmlDocVariable2.
By default, you will now get:
<foo>
..<bar>
..</bar>
</foo>
Notice you now have carriage returns, line feeds, and spaces (shown here as periods)
involved. Depending on how you now go after /foo/bar, this can be bad (i.e.
you won’t get empty content when you might expect it.) You can avoid this
behavior by doing:
xmlDocVariable2.LoadXml(xmlDocVariable.OuterXml);
xmlDocVariable2.PreserveWhitespace = true;
myMessage2 = xmlDocVariable2;
Thanks to Tomas and Carlos for
setting me straight on PreserveWhitespace – I was trying to set it before the
call to LoadXml, and this doesn’t work. Never a dull day in BizTalk land…
The documentation
for PreserveWhitespace is a little strange. This functionality would seem
to be better represented as parameters to Load/Save, rather than as a property…
“If PreserveWhitespace is true before Load or LoadXml is called, white
space nodes are preserved; otherwise, if this property is false, significant white
space is preserved, white space is not. If PreserveWhitespace is true before
Save is called, white space in the document is preserved in the output; otherwise,
if this property is false, XmlDocument auto-indents the output.”
by community-syndication | Jun 18, 2007 | BizTalk Community Blogs via Syndication
This past weekend our company did it’s first significant BizTalk application deployment into a production environment. I encountered a few issues along the way, and I thought I’d list the problem and resolution.
In order of annoyance to me (from least to greatest):
Transport does not have read/write privileges for receive location … We had […]