4 Replies Latest reply on Sep 13, 2013 9:43 AM by disabled_ntaylor

    64-bit ODBC driver fails on first SQLColAttribute call

    barefootguru

      Summary

      64-bit ODBC driver fails on first SQLColAttribute call

      Product

      FileMaker Server

      Version

      12.0v3

      Operating system version

      Windows Server 2008 R2 Enterprise SP1

      Description of the issue

      SAS software can extract data from FileMaker Server using FileMaker ODBC driver under a 32-bit regime but not 64-bit.

      Steps to reproduce the problem

      32-bit set up:

      Windows 7 32-bit with SAS 9.3 Ts1M2 32-bit and 32-bit FileMaker Pro ODBC driver 12.0.103.00

      64-bit set up:

      Windows 2008 Server 64-bit with SAS 9.3 Ts1M2 64-bit and 64-bit FileMaker Pro ODBC driver 12.0.103.00

      another 64-bit test:

      Windows 7 64-bit with SAS 9.2 Ts2M3 64-bit and 64-bit FileMaker Pro ODBC driver 12.0.103.00

      Expected result

      SAS can successfully read a FileMaker table using either FileMaker's 32-bit or 64-bit ODBC driver.

      Actual result

      Read using 32-bit ODBC driver succeeds, while read using 64-bit driver fails.

      Exact text of any error message(s) that appear

      Thorough testing by SAS Institute has narrowed it down to this:

      I ran a test with 64 bit SAS 9.3 TS1M2 using the 64 bit ODBC driver of FileMaker Pro 12 and the exact same test with 32 bit SAS 9.3 TS1M2 using the 32 bit ODBC driver of FileMaker Pro 12. The 32 bit worked. The 64 bit failed on the first SQLColAttribute call.

      ODBC trace snippet of the 32 bit SAS test:

      ODBC: ENTER SQLDescribeCol
                  0x024f5010
                           1
                  0x05646aa4
                         129
                  0x05646b26
                  0x05646b28
                  0x05646b2c
                  0x05646b30
                  0x05646b32
      ODBC: EXIT SQLDescribeCol with return code 0 (SQL_SUCCESS)
                  0x024f5010
                           1
                  0x05646aa4 [       6] "numvar"
                         129
                  0x05646b26 (6)
                  0x05646b28 (8)
                  0x05646b2c (15)
                  0x05646b30 (0)
                  0x05646b32 (1)
      ODBC: ENTER SQLColAttribute
                  0x024f5010
                           1
                           9
                  0x00000000
                           0
                  0x00000000
                  0x05646b4c
      ODBC: EXIT SQLColAttribute with return code 0 (SQL_SUCCESS)
                  0x024f5010
                           1
                           9
                  0x00000000
                           0
                  0x00000000
                  0x05646b4c (0)


      ODBC trace snippet of the 32 bit SAS test:

      ODBC: ENTER SQLDescribeCol
                  0x0000000000446a50
                                   1
                  0x0000000009949e14
                                 129
                  0x0000000009949e96
                  0x0000000009949e98
                  0x0000000009949ea0
                  0x0000000009949ea8
                  0x0000000009949eaa
      ODBC: EXIT SQLDescribeCol with return code 0 (SQL_SUCCESS)
                  0x0000000000446a50
                                   1
                  0x0000000009949e14 [       6] "numvar"
                                 129
                  0x0000000009949e96 (6)
                  0x0000000009949e98 (8)
                  0x0000000009949ea0 (15)
                  0x0000000009949ea8 (0)
                  0x0000000009949eaa (1)
      ODBC: ENTER SQLColAttribute
                  0x0000000000446a50
                                   1
                                   9
                  0x0000000000000000
                                   0
                  0x0000000000000000
                  0x0000000009949ee0
      ODBC: EXIT SQLColAttribute with return code -2 (SQL_INVALID_HANDLE)
                  0x0000000000446a50
                                   1
                                   9
                  0x0000000000000000
                                   0
                  0x0000000000000000
                  0x0000000009949ee0 (0)


      We will need input from the FileMaker Pro developer as to why their 64 bit ODBC driver is returning return code -2 for a standard SQLColAttribute call. If I use SAS Access to ODBC 64 bit with for instance a SQL server ODBC datasource, then I do not see any problems with the SQLColAttribute call SAS does. It really looks like an issue with the 64 bit ODBC driver or ODBC layer in FileMaker Pro 12.

      Configuration information

      SAS Institute adds:

      I ran a test with 64 bit version of http://download.cnet.com/windows/george-poulose-software/3260-20_4-66591.html?filter=licenseName%3D%22Free+to+try%22%7C&filterName=licenseName%3DFree+to+try%7C&rpp=&sort=&topLevel=true&tag=narrow. It shows the data but I did not see in the generated ODBC trace the SQLColAttribute call. Maybe the tool is not interested in that level of detail since it only shows data whereas with SAS you might want to do all kinds of data manipulations that require the SAS modules to know all the details of each of the variables involved.