Microsoft KB Archive/113674

From BetaArchive Wiki
Knowledge Base


INF: -T3640 Flag May Block Updates to an ODBC Application

Article ID: 113674

Article Last Modified on 12/3/2003



APPLIES TO

  • Microsoft SQL Server 4.21a Standard Edition
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft ODBC Driver for Microsoft SQL Server 1.0



This article was previously published under Q113674

SUMMARY

Microsoft SQL Server version 4.21 (and later versions) provides a -T3640 flag that provides stored procedure performance enhancements. The flag optimizes stored procedure execution time because it suppresses the sending of individual statement completion information, which reduces network traffic and has a significant effect on stored procedure execution time, especially in wide area network (WAN) environments.

This information is not required by SQL Server/DB-Library (DB-Lib) applications but may affect some ODBC applications. When SQL Server is running with this flag enabled, an ODBC-enabled application using Microsoft ODBC SQL Server driver to attempt to process update queries against tables in SQL Server may fail because SQL Server is no longer sending rows affected information required by some ODBC applications, such as Microsoft Access for Windows.

MORE INFORMATION

In an ODBC application using the Microsoft ODBC SQL Server Driver to communicate with a SQL Server that is running with the -T3640 flag enabled, the ODBC API call, SQLRowCount(), will not be able to provide the number of rows affected after a statement is prepared as a procedure using SQLPrepare() and then executed using SQLExecute.

The effect is that in some ODBC-enabled applications, such as Microsoft Access, when updates are attempted on a SQL Server table that resides on a SQL Server running the -T3640 flag, the update will fail with the error:

ODBC-call failed


No other error message will be returned.

With the -T3640 flag enabled, SQL Server is unable to return the number of rows updated in response to the ODBC API call SQLRowCount(). Other ODBC- enabled applications, whose proper operation depend the number of rows affected by an ODBC SQL query returning from SQLRowCount(), will encounter similar problems. However, if the -T3640 flag is not used, this problem will not occur.



Additional query words: sql6 Windows NT

Keywords: kbinterop KB113674