SSIS needed to configure BAM in BizTalk 2006?
- Connectivity Components
- Management Tools
- Business Intelligence Development Studio
- Legacy Components
Cannot get the BizTalk ExposeWebService sample to run on Windows XP
I had problems getting the BizTalk 2006 R2 ExposeWebService sample to run on my Windows XP machine. The published orchestration threw a SOAPException. The event log said
An attempt to connect to "BizTalkMgmtDb" SQL Server database on server "SE-890652" failed. Error: "Cannot open database "BizTalkMgmtDb" requested by the login. The login failed."
and
The Messaging Engine failed to register the adapter for "SOAP" for the receive location "/ExposeWebService_Proxy/Microsoft_Samples_BizTalk_ExposeWebService_ProcessClientRequest_SOAPPort.asmx". Please verify that the receive location exists, and that the isolated adapter runs under an account that has access to the BizTalk databases.
Clear as a cucumber. You need to add the account that the isolated adapter runs under to the BizTalk Isolated Host Users group. But which account? In Windows Server 2003 (IIS 6), you can configure the account the application pool is using, as pointed out in the documentation (ms-help://MS.BTS.2006/BTS06CoreDocs/html/b6d2377b-5a8c-4f1c-8d01-75d3f34bef6a.htm). But Windows XP (IIS 5) does not have this feature. It turns out it is the local ASPNET account that has to be added to the BizTalk Isolated Host Users group. Run IISReset before trying again.
SharePoint Terminology
Confused by Windows SharePoint Services (WSS) terminology? Here is an attempt to straighten it out.
WSS v. 3 Term |
Old Term |
Class |
Notes |
Farm |
A farm is the highest-level scope for a WSS deployment. A farm is an installation of one of more Web servers and back-end servers. Each farm has one and only one configuration DB. |
||
Web application |
Virtual server |
SPVirtualServer |
A web application is an IIS web site extended with WSS. A web application is capable of hosting many site collections. |
Site collection |
Site |
SPSite |
The administration of a site collection can be delegated to e.g. a business division, which can create as many sites as they want. A site collection is an island in terms of security. A site collection is stored in one specific content DB. A site collection is the best unit of backup and restore, and moving from development to test to production. When a site collection is created, a top-level site is always created. |
Site |
Web |
SPWeb |
Sites can be created in a hierarchical manner. |
BizTalk expressions: null or empty string?
System.Diagnostics.Debug.WriteLine(RegisterCustomerAccountIncoming.ExistingAccount.SystemName);
where SystemName is a distinguished field writes an empty string to the debug log, but this comparison fails:
RegisterCustomerAccountIncoming.ExistingAccount.SystemName == ""
because it really contains null! So you should really check for both null and empty string just to be sure:
RegisterCustomerAccountIncoming.ExistingAccount.SystemName == null || RegisterCustomerAccountIncoming.ExistingAccount.SystemName == ""
“if” condition in a BizTalk XLANG expression shape
BizTalk Configuration Failing
Some days ago, I tried to install and configure BizTalk Server 2004 at a customer but the configuration wizard reported the following error: "Creation of Adapter FILE Configuration Store entries failed. Access is denied." There was also a an event log entry under Security that read:
Event Type: Failure Audit
Event Source: Security
Event Category: Logon/Logoff
Event ID: 537
Date: 2005-12-05
Time: 08:35:45
User: NT AUTHORITYSYSTEM
Computer: INTEGRATIONSTAG
Description:
Logon Failure:
Reason: An error occurred during logon
User Name: holsson
Domain: INTEGRATIONSTAG
Logon Type: 3
Logon Process: Ðùê ‚^
Authentication Package: NTLM
Workstation Name: INTEGRATIONSTAG
Status code: 0xC000006D
Substatus code: 0x0
Caller User Name: –
Caller Domain: –
Caller Logon ID: –
Caller Process ID: –
Transited Services: –
Source Network Address: 80.69.230.67
Source Port: 2463
First, I suspect some kind of account permission problem, perhaps relating to the fact that I was using local (rather than domain) accounts. But the real problem turned out to be the computer name! It was longer than 15 characters, which resulted in the NetBIOS name being truncated to 15 characters. When we renamed the server to a name less than 15 characters long, it worked straight away.
Binding a DataGrid in .Net
private void DisplayDataSet()
{
dataSet1.Tables[0].Rows.Add("Title 1");
dataSet1.Tables[0].Rows.Add("Title 2");
DataGridTableStyle tableStyle = new DataGridTableStyle();
tableStyle.MappingName = "Titles";
DataGridColumnStyle columnStyle = new DataGridTextBoxColumn();
columnStyle.MappingName = "Title";
columnStyle.HeaderText = "Title";
columnStyle.Width = dataGrid1.Width;
tableStyle.GridColumnStyles.Add(columnStyle);
dataGrid1.TableStyles.Add(tableStyle);
dataGrid1.DataSource = dataSet1;
dataGrid1.DataMember = "Titles";
}
private void DisplayTypedArray()
{
Record[] titles = new Record[2];
titles[0] = new Record("Title 3");
titles[1] = new Record("Title 4");
DataGridTableStyle tableStyle = new DataGridTableStyle();
tableStyle.MappingName = "Record[]";
DataGridColumnStyle columnStyle = new DataGridTextBoxColumn();
columnStyle.MappingName = "Title";
columnStyle.HeaderText = "Title";
columnStyle.Width = dataGrid2.Width;
tableStyle.GridColumnStyles.Add(columnStyle);
dataGrid2.TableStyles.Add(tableStyle);
dataGrid2.DataSource = titles;
}
private void DisplayArrayList()
{
System.Collections.ArrayList titles = new System.Collections.ArrayList();
titles.Add(new Record("Title 5"));
titles.Add(new Record("Title 6"));
DataGridTableStyle tableStyle = new DataGridTableStyle();
tableStyle.MappingName = "ArrayList";
DataGridColumnStyle columnStyle = new DataGridTextBoxColumn();
columnStyle.MappingName = "Title";
columnStyle.HeaderText = "Title";
columnStyle.Width = dataGrid3.Width;
tableStyle.GridColumnStyles.Add(columnStyle);
dataGrid3.TableStyles.Add(tableStyle);
dataGrid3.DataSource = titles;
}
private void DisplayTypedList()
{
System.Collections.Generic.List<Record> titles = new System.Collections.Generic.List<Record>();
titles.Add(new Record("Title 7"));
titles.Add(new Record("Title 8"));
DataGridTableStyle tableStyle = new DataGridTableStyle();
tableStyle.MappingName = titles.GetType().Name;
DataGridColumnStyle columnStyle = new DataGridTextBoxColumn();
columnStyle.MappingName = "Title";
columnStyle.HeaderText = "Title";
columnStyle.Width = dataGrid4.Width;
tableStyle.GridColumnStyles.Add(columnStyle);
dataGrid4.TableStyles.Add(tableStyle);
dataGrid4.DataSource = titles;
}
public class Record
{
private string title;
public string Title
{
get { return title; }
set { title = value; }
}
public Record(string title)
{
this.title = title;
}
}