﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
5246	MS SQL Server backend using pyodbc.	Filip Wasilewski <filip.wasilewski@…>	nobody	"Note: The code is partially based on the #5062 ticket with several fixes, modifications
and improvements applied.

== Main features: ==
 - Uses pyodbc (http://pyodbc.sourceforge.net) as the database driver. This seems to be the most mature
   SQL Server driver for Python and __is still maintained__, which is a __big__
   plus compared to other SQL Server drivers like adodbapi and pymssql.
   Pyodbc is also used by SQLAlchemy for SQL Server connections.
 - Native Unicode support. Every string that goes in is stored as Unicode,
   and every string that goes out of the database is returned as Unicode.
   No conversion to/from intermediate encodings takes place, so things like
   `max_length` in `CharFiled` works just like expected.
 - Limit/offset supported in SQL Server 2005 and SQL Server 2000. Yay!
 - Both Windows Authentication (Integrated Security) and SQL Server
   Authentication supported.
 - Passes most of the model test cases. The tests that don't work out of
  the box are:
   - empty: Corner-case. As far as I know SQL Server 2005 does not support that.
     There seems to be little use of it at all.
   - lookup: Regular expressions are not supported out of the box. Only simple
     wildcard matching with %, _ and [] character classes.
   - serializers: Forward references cause foreign key constraint violation.
 - Tested with SQL Server 2005 Express SP2 and SQL Server 2000 SP4, Python 2.5
   and Windows XP.

== Open issues: ==
 - SQL Server collation support. I have added a collation parameter to the
   `Field` constructor to see how this will work.
 - Is case sensitive/insensitive comparison using explicit collations
   a sensible thing?
 - Introspection not tested yet.
 - Support for ODBC specific configuration -- see module doc in base.py for
   DATABASE_SETTINGS options.
 - SQL Server 2005 specific: `nvarchar(max)` instead of `ntext` is used
   for storing `TextField` data. This allows for exact matching
   (`__exact`, `=`) on this field type. (Unicode text parameters are
   passed to the SQL Server as `nvarchars`, but the comparison of
   `nvarchar` with `ntext` is not supported.)
   [[BR]]
   Note: `nvarchar(max)` type is not supported on previous SQL Server
   versions and some additional magic may be required. For now the
   exact matching on `TextFields` will not work in older versions.

Almost there...
"		closed	Database layer (models, ORM)	dev		invalid	mssql pyodbc database backend feature	filip.wasilewski@…	Design decision needed	1	0	0	0	0	0
