Here is a brief summary of another alternatives to access MS SQL Server from Windows (see the Unix page for Unix alternatives). Most of these alternatives offer better portability, if you need to access other RDBMSs as well. If you feel something is missing, please drop me a line on esquel@sommarskog.se.
You find further information on the DBI home page. More DBD drivers are mentioned below.
How widely it is used in this day and age, I don't know. The latest version is from 1998, which means that it is not likely to provide full support for SQL 2000, even less SQL 2005.
The advantage with Win32::ODBC over DBD::ODBC is that you get more direct access to the ODBC API. On the other hand Win32::ODBC requires more careful programming. For instance, you have no option but to check for errors yourself, in difference to DBD::ODBC and Win32::SqlServer. And it appears that you can only retrieve the last error message, which is my opinion is a very serious restriction.
In terms of portability Win32::ODBC permits you to talk from any DB engine with an ODBC driver from a Microsoft platform, but it does not run on Unix or other OS:s as far as I know.
Rather than using ADO direclty through Win32::OLE, there is a DBD::ADO on CPAN. There is also an Win32::ADO, but this is a version 0.03 from 1999, so it may not be full-fledged.
I don't have any experience of DBD::ADO or Win32:ADO, but I have used ADO from Visual Basic, and I find it difficult to offer very many kind words for this API. ADO is fond of doing things behind your back, and error handling is flaky. (I have section on ADO in my articles on error handling in SQL Server on my main web site.) See also this KB article from Microsoft about some quite unlogical restrictions with error handling in ADO.
I have to admit that I follow the arena of SQL Server access from Perl poorly. If you want to find inquire about other alternatives, the mailing list Perl-win32-database is probably a good place. This, and other mailing lists about Perl is hosted by ActiveSate. And if you discvoer something which is not on this page – please tell me!
Last updated 05-11-27 17:40