For SQL Server 2000, change the dialect to NHibernate.Dialect.MsSql2000Dialect.

Issues

SQL Server sometimes ignores columns specified in ORDER BY clause of a query if they are not included in the SELECT clause. This behavior is actually valid according to the SQL standard, but may be surprising. For example, a query like this is not guaranteed to be ordered correctly:

from Person p order by p.Company.Name

Oracle

Oracle 9i and 10g are supported, both using Microsoft driver (System.Data.OracleClient) and using Oracle driver (Oracle.Data.OracleClient).

Issues

Microsoft's driver does not handle long character strings correctly. An error happens in some circumstances when using a string of length 2000-4000 as a parameter value.

Oracle cannot handle empty strings (""), you should use null instead. An IUserType implementation to perform the conversion is contained in Nullables.NHibernate library (part of NHibernateContrib package).

Microsoft Access

Microsoft Access has its own dialect and driver (contributed by Lukas Krejci).

They are currently in a separated library: NHibernate.JetDriver.dll (in NHibernateContrib package).

Here is what your hibernate.cfg.xml file should contain when using a Microsoft Access database:

Firebird

Firebird is supported since version 1.5.3, though version 2.0.1 is strongly recommended. To work with Firebird, install the latest Firebird .NET Data Provider. If the data provider is installed in the GAC (the standard behavior of its installer), add this section to your application configuration file (App.config or Web.config):

MySQL has a unique "feature" of allowing invalid dates in a DATE field, and especially using 0000-00-00 as a default value for DATE NOT NULL columns. When MySQL Connector encounters such a date, it either throws an exception or returns a non-standard MySqlDateTime object (depending on a connection string parameter) which throws an exception when converting itself to a DateTime.

Possible workarounds:

avoid zero dates

modify Connector/NET source code to round zero dates to DateTime.Min and back (see JIRA issue NH-32 for a patch to an older version of the Connector)

create a user type for MySqlDateTime (no known implementations currently)

SQLite currently fails 17 tests out of approximately 500 in NHibernate test suite. Some of the failures are caused by SQLite being unable to store strings containing NUL characters, other tests fail because of a bug in SQLite ADO.NET provider when using a table with spaces in its name.