SUPPORT / SAMPLES & SAS NOTES
 

Support

Problem Note 70912: Read performance with SAS/ACCESS® Interface to Microsoft SQL Server might be poor or writes might be incorrect

DetailsHotfixAboutRate It

When using SAS/ACCESS Interface to Microsoft SQL Server to update multiple rows in Microsoft SQL Server, if you are using driver version 08.02.1617 (B2215, U2040), you must set the following:

  • the LIBNAME option CURSOR_TYPE=DYNAMIC
  • the ODBC DSN option EnableServerSideCursors=4

If you do not set these options, updates to multiple rows might result in incorrect updates.

However, CURSOR_TYPE=DYNAMIC has a negative impact on READ performance. 

To check the version of the driver that is installed, assign a LIBNAME and run LIBNAME libref  LIST ;.  The output will display the version, as shown in the example below.

  1? libname dbms sqlsvr dsn=your-dsn user=userid password=password ;
NOTE: Libref DBMS was successfully assigned as follows:
      Engine:        SQLSVR
      Physical Name: your-dsn
  2? libname dbms list ;
NOTE: Libref=   DBMS
      Scope=    Line Mode Process
      Engine=   SQLSVR
      Physical Name= your-dsn
      Schema/Owner= userid
      Server version: = 15.00.4312
      SQL Driver version: = 08.02.1617 (B2215, U2040)
      ODBC Driver name: = S0sqls28.so

If you need to have good read performance and to ensure that updates work correctly, you must use two different libnames:

  • one LIBNAME without CURSOR_TYPE=DYNAMIC to allow good performance for reading rows
  • one LIBNAME with CURSOR_TYPE=DYNAMIC to allow correct update of rows

Click the Hot Fix tab in this note to access the hot fix for this issue.

Once the hot fix is deployed, you should stop using CURSOR_TYPE=DYNAMIC, and you should ensure that EnableServerSideCursors=4 is set in your ODBC DSN options.



Operating System and Release Information

Product FamilyProductSystemProduct ReleaseSAS Release
ReportedFixed*ReportedFixed*
SAS SystemSAS/ACCESS Interface to Microsoft SQL ServerMicrosoft® Windows® for x649.4_M79.4 TS1M7
Microsoft Windows 8 Enterprise 32-bit9.4_M79.4 TS1M7
Microsoft Windows 8 Enterprise x649.4_M79.4 TS1M7
Microsoft Windows 8 Pro 32-bit9.4_M79.4 TS1M7
Microsoft Windows 8 Pro x649.4_M79.4 TS1M7
Microsoft Windows 8.1 Enterprise 32-bit9.4_M79.4 TS1M7
Microsoft Windows 8.1 Enterprise x649.4_M79.4 TS1M7
Microsoft Windows 8.1 Pro 32-bit9.4_M79.4 TS1M7
Microsoft Windows 8.1 Pro x649.4_M79.4 TS1M7
Microsoft Windows 109.4_M79.4 TS1M7
Microsoft Windows 119.4_M79.4 TS1M7
Microsoft Windows Server 20089.4_M79.4 TS1M7
Microsoft Windows Server 2008 R29.4_M79.4 TS1M7
Microsoft Windows Server 2008 for x649.4_M79.4 TS1M7
Microsoft Windows Server 2012 Datacenter9.4_M79.4 TS1M7
Microsoft Windows Server 2012 R2 Datacenter9.4_M79.4 TS1M7
Microsoft Windows Server 2012 R2 Std9.4_M79.4 TS1M7
Microsoft Windows Server 2012 Std9.4_M79.4 TS1M7
Microsoft Windows Server 20169.4_M79.4 TS1M7
Microsoft Windows Server 20199.4_M79.4 TS1M7
Microsoft Windows Server 20229.4_M79.4 TS1M7
Windows 7 Enterprise 32 bit9.4_M79.4 TS1M7
Windows 7 Enterprise x649.4_M79.4 TS1M7
Windows 7 Home Premium 32 bit9.4_M79.4 TS1M7
Windows 7 Home Premium x649.4_M79.4 TS1M7
Windows 7 Professional 32 bit9.4_M79.4 TS1M7
Windows 7 Professional x649.4_M79.4 TS1M7
Windows 7 Ultimate 32 bit9.4_M79.4 TS1M7
Windows 7 Ultimate x649.4_M79.4 TS1M7
64-bit Enabled AIX9.4_M79.4 TS1M7
64-bit Enabled Solaris9.4_M79.4 TS1M7
HP-UX IPF9.4_M79.4 TS1M7
Linux for x649.4_M79.4 TS1M7
Solaris for x649.4_M79.4 TS1M7
* For software releases that are not yet generally available, the Fixed Release is the software release in which the problem is planned to be fixed.