This question is actually answered with another question. Exactly how do you index a database?

The problem being that a database is just that, it’s merely data. There is no “Standard User Interface” out there that works for all databases, so how do you display search results? Sure there are some techniques for creating a “generic” user interface for tables, think DataGrid and the like, but I’m not convinced wrapping that sort of feature into SharePoint would be all that useful.

Now, enough background, what about a solution. Well there are many, ranging from building your own protocol handler to using Access to do an “Export to Web Page” (you can do that right?), but the one I like the most goes like this:

1. Create a Web Page (eg. MyDataBase.aspx (try something more creative than that)) that iterates through all the items in a table outputting something like:
                  <a href=”http://<server>/GetDatabaseRow.aspx?<PrimaryKey>=XXXXXXX”>Database Row</a>
2. When you click on this link, another web page you have written digs into the database, pulls out that item, and renders the detail in a nice web page.
3. Point the SharePoint Web Crawler at “MyDatabase.aspx” telling it to follow complex links (via the creation of a include rule)
4. Kick off the index, then “Hey presto!”, your database is “indexed” and more importantly it has a user interface to make sense of the data that is returned in the result.

With all this said, I can see some value in indexing a database, particularly around alerting and subscriptions, but that is another post…..

P.S. As a final footnote, I remember many years ago that “Microsoft SiteServer” did this, it could index ODBC source, but that is about as much as I remember, so I dont think it was too widely deployed. Anyone else out there remember?