Scott Stansbury wrote: > I'm trying to connect to a SQL Server 2008 instance from a CentOS5 box: > > unixODBC: 2.2.14 > FreeTDS: 0.82 > Easysoft: odbc-sqlserver-1.1.4-linux-x86 (trial for now) > > osql/isql worked fine with both the FreeTDS and the Easysoft drivers. > > Connecting to a SQL Server 2008 instance running on a Server 2008 box. > > DBB::ODBC make test fails as follows: > > [sc...@server1 DBD-ODBC-1.22-hGw3zr]$ make test > PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" > "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t > t/01base.t .............. ok > t/02simple.t ............ 1/65 # > # Perl 5.8.8 > # osname=linux, osvers=2.6.18-53.el5, archname=i386-linux-thread-multi > # Using DBI 1.609 > # Using DBD::ODBC 1.22 > # Using DBMS_NAME 'Microsoft SQL Server' > # Using DBMS_VER '10.00.1600' > # Using DRIVER_NAME 'libessqlsrv.so' > # Using DRIVER_VER '01.01.0004' > # odbc_has_unicode 0 > t/02simple.t ............ ok > t/03dbatt.t ............. 3/29 # > # N.B. Some drivers (postgres/cache) may return ODBC 2.0 column names > for the SQLTables result-set e.g. TABLE_QUALIFIER instead of TABLE_CAT > t/03dbatt.t ............. ok > t/05meth.t .............. ok > t/07bind.t .............. ok > t/08bind2.t ............. ok > t/09multi.t ............. ok > t/10handler.t ........... ok > t/12blob.t .............. ok > t/20SqlServer.t ......... 3/65 # DBD::ODBC::db do failed: > [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Statement(s) > could not be prepared. (SQL-42000) > # [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Must declare > the scalar variable "@P1". (SQL-42000) > # [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Line 1: Length > or precision specification 0 is invalid. (SQL-42000) at t/20SqlServer.t > line 78. > > # Failed test 'create PERL_DBD_TABLE1 and insert test data' > # at t/20SqlServer.t line 82. > # DBD::ODBC::db do failed: [unixODBC][Easysoft][SQL Server Driver > 10.0][SQL Server]Statement(s) could not be prepared. (SQL-42000) > # [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Must declare > the scalar variable "@P1". (SQL-42000) > # [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Line 1: Length > or precision specification 0 is invalid. (SQL-42000) at t/20SqlServer.t > line 78. > > # Failed test 'create PERL_DBD_TABLE1 and insert test data' > # at t/20SqlServer.t line 82. > t/20SqlServer.t ......... 65/65 # Looks like you failed 2 tests of 65. > t/20SqlServer.t ......... Dubious, test returned 2 (wstat 512, 0x200) > Failed 2/65 subtests > (less 6 skipped subtests: 57 okay) > t/30Oracle.t ............ ok > t/40UnicodeRoundTrip.t .. ok > t/41Unicode.t ........... ok > t/pod-coverage.t ........ 1/1 # Test::Pod::Coverage 1.04 required for > testing POD coverage > t/pod-coverage.t ........ ok > t/pod.t ................. ok > t/rt_38977.t ............ 2/11 DBD::ODBC::st execute failed: > [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Statement(s) > could not be prepared. (SQL-42000) > [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Must declare the > scalar variable "@P1". (SQL-42000) > [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Line 1: Length > or precision specification 0 is invalid. (SQL-42000) at t/rt_38977.t > line 90. > > # Failed test 'execute insert' > # at t/rt_38977.t line 93. > # Execute for insert into varchar(max) failed with DBD::ODBC::st execute > failed: [unixODBC][Easysoft][SQL Server Driver 10.0][SQL > Server]Statement(s) could not be prepared. (SQL-42000) > # [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Must declare > the scalar variable "@P1". (SQL-42000) > # [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Line 1: Length > or precision specification 0 is invalid. (SQL-42000) at t/rt_38977.t > line 90. > # Some SQL Server drivers such as the native client 09.00.1399 driver > fail this test with a HY104, "Invalid precision error". You have driver > libessqlsrv.so at version 01.01.0004. There is a free upgrade from > Microsoft of the native client driver to 10.00.1600 which you will need > if you intend to insert into varchar(max) columns. > DBD::ODBC::st execute failed: [unixODBC][Easysoft][SQL Server Driver > 10.0][SQL Server]Statement(s) could not be prepared. (SQL-42000) > [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Must declare the > scalar variable "@P1". (SQL-42000) > [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Line 1: Length > or precision specification 0 is invalid. (SQL-42000) at t/rt_38977.t > line 127. > DBD::ODBC::st execute failed: [unixODBC][Easysoft][SQL Server Driver > 10.0][SQL Server]Statement(s) could not be prepared. (SQL-42000) > [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Must declare the > scalar variable "@P1". (SQL-42000) > [unixODBC][Easysoft][SQL Server Driver 10.0][SQL Server]Line 1: Length > or precision specification 0 is invalid. (SQL-42000) at t/rt_38977.t > line 127. > # Looks like you planned 11 tests but ran 10. > # Looks like you failed 1 test of 10 run. > # Looks like your test exited with 13 just after 10. > t/rt_38977.t ............ Dubious, test returned 13 (wstat 3328, 0xd00) > Failed 2/11 subtests > t/rt_39841.t ............ ok > t/rt_39897.t ............ ok > t/rt_43384.t ............ ok > t/rt_46597.t ............ ok > t/rt_null_nvarchar.t .... ok > > Test Summary Report > ------------------- > t/20SqlServer.t (Wstat: 512 Tests: 65 Failed: 2) > Failed tests: 7, 11 > Non-zero exit status: 2 > t/rt_38977.t (Wstat: 3328 Tests: 10 Failed: 1) > Failed test: 8 > Non-zero exit status: 13 > Parse errors: Bad plan. You planned 11 tests but ran 10. > Files=21, Tests=444, 30 wallclock secs ( 0.02 usr 0.28 sys + 0.35 > cusr 2.49 csys = 3.14 CPU) > Result: FAIL > Failed 2/21 test programs. 3/444 subtests failed. > make: *** [test_dynamic] Error 255 > > Thanks for any insight... > > Best regards, > Scott... > >
These issues are fixed and I've put Scott in contact with the right person to get an updated driver. Martin -- Martin J. Evans Easysoft Limited http://www.easysoft.com