Your only hope is to separate data access into a proper data access layer, as Remus Rusanu suggests. The data access layer can have one consistent interface to the rest of your code, and be changed out for other versions for each DB platform. Keeping the SQL fairly standard will help, but it's not really possible to write one body of SQL code and have it work everywhere (the SQL standard isn't that well implemented.).
Consider (with some costs in term of learning curve) the adoption of a Domain Model and a data access layer based on an OR/M like Nhibernate. Org/343. Html).
Make sure you write all your client code using the abstract IDbConnection, IDbCommand, IDataReader instead of the concrete. You will also have to keep your SQL statements in check all the time to ensure you use only compatible syntax. You can also try connecting via the OdbcConnection/OdbcCommand components and use generic ODBC syntax and generic ODBC data types (ie.
The {fn SUBSTRING(...)} stuff, aka. The ODBC Escaped Syntax). As an alternative what I prefer to do is to isolate the data access and create specific DAL classes for each back end.
I use XML and XSLT to generate the DAL code. Similar to this the technique of integrating XSLT code generation from my blog, but with XSLTs geared specifically for each back-end specific code.
The Microsoft Exchange Server 2007 database portability feature allows a mailbox database to be mounted on any server in the same organization. In Exchange Server 2003 and Exchange 2000 Server, several issues needed to be addressed when moving a database to another server in the same administrative group. The database portability feature removes the previous limitations and handles the issues that they presented.
Reliability is improved by removing error-prone manual steps in the recovery processes. For a lost clustered mailbox server scenario, the clustered mailbox server needed to be recovered before clients could access Exchange databases. Exchange mailbox data is non-server specific, so accessing that data should also be non-server specific.
Database portability reduces the end-to-end recovery times for various disaster recovery scenarios. At the Extensible Storage Engine (ESE) level, Exchange databases are portable. However, Exchange Server 2003 imposes certain restrictions before bringing a database online at an alternate location that do not allow databases to be portable.
Database portability removes all but one such restriction, which is that the database needs to be from the same Exchange organization. A portable database is of no use, unless clients can be redirected to the mailbox data at the alternate location. With the Microsoft Office Outlook 2007 and the Exchange 2007 Autodiscover service, clients are redirected to the new server when they try to connect.
For information about how to perform a database recovery by using the database portability feature, see How to Restore a Mailbox Database to a New Server with Database Portability.
I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.