Open source projects for PST file access

This goes back a while and I just plain forgot to post about it.

Back in February of 2010, Microsoft released a public specifications for PST files, the databases used by Outlook for storing and archiving e-mail. To these specifications, Microsoft also added a pair of developer-oriented open source projects:

Though the core Office document formats are now XML-based open standards, alleviating such lock-in issues, Outlook has continued to use a complex database format for storing mail, making interoperability difficult. With the documentation and these software projects, the days of being locked into Outlook could be coming to an end.

The SDK project is still not finished; seemingly it still only provides read-only access to PST data, though write support is purportedly planned. Both tools are released using under the Apache License 2.0. This means that they can be incorporated into proprietary, closed-source projects, as well as other open source projects.

Overall the information available at the Microsoft Interoperability site is very, very useful and I would strongly recommend a visit.


Moving large numbers of records with SqlBulkCopy

Sometimes you have to move large amounts of data in, out, or around SQL. There are plenty of ways to do that but few are as fast as using SqlBulkCopy. It is not fast. It is blazingly fast. As with anything else it has its place and limitations but it is well worth understanding at the least.
It is pretty easy to work with as the below example shows…
static void CopyData(DataTable sourceTable, SqlConnection destConnection)
// new method: SQLBulkCopy:
using (SqlBulkCopy s = new SqlBulkCopy(destConnection))
s.DestinationTableName = “SalesCopy”;
s.NotifyAfter = 10000;
s.SqlRowsCopied += new SqlRowsCopiedEventHandler(s_SqlRowsCopied);

When used properly it can make seemingly large data volume transactions trivial.

Visual Studio 2010 problem with Vault

Working with Visual Studio 2010 and SQL 2008 I got this message out of the blue:
‘System.__ComObject’ to interface type ‘Microsoft.VisualStudio.OLE.Interop.IServiceProvider’. This operation failed because the QueryInterface call on the COM component for the interface with IID ‘{6D5140C1-7436-11CE-8034-00AA006009FA}’ failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

Whoah… After a reboot, some thought, a few more attempts to build, and a bit of luck, I deduced with reasonable certainty that Vault, which I use for version control, was the culprit.
So I closed Studio 2010 and removed Vault. Then I opened the same solution and did a build with no problems. Next step is to figure out what to do about getting Vault back into play. Or not.

Exam 70-542: Study recommendations

Subject Link
Excel Services
Search No special recommendation. I had taken a class on search earlier this year and real-world experience carried me through. Work with the “search center” component of MOSS.
Content Mgmt

BI Hands-on working with KPI’s in MOSS.
Info mgmt
Records mgmt