|
FIX: DB-Library Fixlist for Version 4.21.00Article ID: Q115076Creation Date: 18-MAY-1994 Revision Date: 29-APR-1997
The following is a list of fixes and other various improvements that
have been made in DB-Library (DB-Lib) version 4.21.00. DB-Library
version 4.21.00 is now available from your primary support provider.
For more information, contact your primary support provider.
Please note that workarounds have been provided for your information
only. It is not necessary to implement these workarounds if you have
the updated software.
List of Problems Corrected in 4.21.00
Description of Problems Corrected in 4.21.00
FIX: dbcursor() Fails with 10030 When Updating Character Value
ARTICLE ID: Q105363
BUG# 9516
SYMPTOMS
When attempting to update or insert a value into a char or varchar
column using cursors, the dbcursor() function fails with error 10030:
Invalid parameter in DB-Library function reference.CAUSE The function dbcursor() will reject attempts to insert or update columns in SQL Server with character values that contains the following reserved SQL keywords: - update - where - insert unless the first character of the reserved keyword is the first character in the string to be inserted. For example, using the SQLCURS sample program, the following SET statements will fail:
SET au_lname = "jack where jack" SET au_lname = " where jack"However, the au_lname field can be successfully updated with the following SET statements:
SET au_lname = "jack wh"+"ere jack" SET au_lname = "where jack"WORKAROUND If the desired character value contains reserved keywords, it may be necessary to use two concatenated strings for the value to be inserted, such that the reserved keyword is split up. If use of string concatenation is not practical, it may be necessary to use non-cursored methods to insert the new value, such as dbcmd() and dbsqlexec().
FIX: dbcursorcolinfo() Will Not Return Usertype for Column ARTICLE ID: Q105364 BUG# 9497
SYMPTOMS The value -1 will be always be returned when using dbcursorcolinfo() to determine the usertype of a column in a cursored result set. This behavior is not consistent with dbucoltype() which will return the value -1 for system datatypes and the user type for user-defined datatypes.
CAUSE The DB-Library function dbcursorcolinfo() returns -1 as the usertype for any column in a cursored results set.
FIX: Non-Serialized Execution of dbcursoropen() Hangs Client ARTICLE ID: Q105750 BUG# 9530
SYMPTOMS When calling dbcursoropen() from multiple threads of execution within a DB-Library program, the client application appears to hang. If SQL Server is started with -T4032, repeated 'use database' commands will be seen to be submitted from a single client connection.
CAUSE The dbcursoropen() function is not fully re-entrant. A small window of opportunity exists for problems to arise when multiple threads of the same process execute dbcursoropen() simultaneously.
WORKAROUND Access to the following functions should be serialized with a single synchronization object:
dbcursoropen() dbopen() dbuse() dbmsghandle() dberrhandle() FIX: GP Fault in Multi-Threaded DB-Library Program ARTICLE ID: Q105751 BUG# 9531
SYMPTOMS When calling DB-Library from multiple threads of execution within a client application, a general protection fault (GP fault) occurs. This happens despite serialization of DB-Library calls involving global variables as documented in the Microsoft SQL Server "Programmer's Reference for C."
CAUSE Interactions between threads executing several different DB-Library functions can result in a situation leading to an infinite recursion and GP fault. This is most likely to occur when multiple threads are executing dbuse() and dbcursoropen() simultaneously.
WORKAROUND Access to the following functions should be serialized with a single synchronization object:
dbcursoropen() dbopen() dbuse() dbmsghandle() dberrhandle() FIX: Timeout Error Causes dbprocess to Be Dead ARTICLE ID: Q105947 BUG# 9541
SYMPTOMS Using DB-Library version 4.20.50, when dbsettime is used to set a timeout and a timeout error occurs, instead of getting
SQLETIME (10024) SQL Server connection has timed outor
SQLEDDNE (10005) DBRPOCESS is dead or not enabledthe error is received in the error handler. This does not happen with DB-Library version 4.20.21.
FIX: BCP Fails with "Not Enough Memory" ARTICLE ID: Q106134 BUG# 9522
SYMPTOMS When the SQL Server Bulk Copy Program (BCP) version 4.20.50 is being used to transfer data into SQL Server from an MS-DOS workstation, the following error may be generated:
Operating-system error: not enough memory DB_LIBRARY error: unable to allocate sufficient memoryDepending on the version of MS-DOS, the operating system error might also say:
not enough coreCAUSE BCP is not correctly freeing up memory under certain conditions and it may run out of conventional memory.
WORKAROUND If you encounter this situation, you can either run the BCP process from an OS/2 or Windows NT SQL Server machine. An alternate solution is to use BCP version 4.20.21.
FIX: Memory Leak When Converting String to DBDATETIME ARTICLE ID: Q108684 BUG# 9703
SYMPTOMS While executing multiple calls to dbconvert() that convert a character string to a DBDATETIME value, an error number 10000 message occurs:
Unable to allocate sufficient memoryCAUSE Conversion of character string values to DBDATETIME variables can result in gradual memory leakage within DB-Library. DB-Library memory in a Windows or medium-model MS-DOS application will be exhausted after approximately 3500 calls to dbconvert(). DB-Library applications compiled for Windows NT, large-model MS-DOS and OS/2 will be less affected as the maximum heap size is much larger in these environments.
WORKAROUND This behavior occurs with DB-Library version 4.20.32 and later. The problem will not occur using DB-Library 4.20.00 and 4.20.21.
FIX: Message 4805 Returned When Calling SqlBCPExec%() ARTICLE ID: Q109854 BUG# 9415 (4.2)
SYMPTOMS When attempting to bulk-copy data from a system file into a database table with the SQL Server Development Toolkit for Visual Basic, the call to SqlBCPExec%() returns the following error message:
Error #: 4805 The front end tool you are using does not support the feature of bulk insert from host, please use the proper tools for this command.This occurs even though it is possible to successfully bulk-copy from the database table to a system file.
CAUSE The above error is returned if SqlBcpExec%() is called with the DBIN% parameter and the login record has not been properly set for bulk-copy operations.
WORKAROUND The following function properly sets the login record:
Results% = SqlBCPSetL%(loginRec%, 1)For versions of VBSQL.VBX earlier than 4.21, the second parameter must be set to the DB-Library Boolean value of TRUE (1). If this parameter is set to the BASIC Boolean value of TRUE (-1), the login record will not be properly set. VBSQL version 4.21 will allow either TRUE(1) or TRUE(-1) to be used in order to enable the login record to support bulk-copy operations. For more information, consult page 106 of the "SQL Server Programmer's Reference for Visual Basic."
FIX: dbstrcpy() Copies Maximum of 32676 Bytes to Destination ARTICLE ID: Q112002 BUG# 8624
SYMPTOMS When using dbstrcpy() to examine the contents of the current DB-Library (DB- Lib) command buffer, only the first 32767 bytes are copied to the destination address.
FIX: Calling dbcursorfetch() May Trap PDBLIB.DLL ARTICLE ID: Q112092 BUG# 9725
SYMPTOMS Calling dbcursorfetch() heavily may generate access violation in PDBLIB.DLL.
CAUSE Dbcursorbind() does not set the destination address in the DBCURBIND struct correctly in some very specific situation.
FIX: Unable to Login Using Named Pipes After Login Failure ARTICLE ID: Q114120 BUG# 8961
SYMPTOMS After a login failure occurs, further attempts to connect from the same application continue to fail. Other applications can connect to the same or other SQL Servers without a problem. You can restart Windows to clear up the problem. If the list of currently loaded modules is examined with a utility, DBNMP3.DLL will be loaded even though there are no DB-Library (DB-Lib) applications running. Using a utility to unload the DBNMP3.DLL will also clear up the problem.
CAUSE If a login attempt fails, DB-Library does not unload the Named Pipe Network Library (Net-Library) DBNMP3.DLL. Usually, this does not cause a problem. However, in certain instances, if the login failure occurs because of network error during the login process, the Named Pipes Net-Library can be left in a state that prevents further connections by the application that had the login failure. The login error is not always apparent to the user. In applications that use a "make/break" style of connection to the SQL Server, the failure can occur when the application attempts to reconnect to the SQL Server in response to some user request. Thus, it appears to the user that the application has suddenly stopped working.
WORKAROUND Restart Windows. Or, if a utility is available that can unload a module, unloading DBNMP3.DLL will usually clear up the problem. When attempting to unload DBNMP3.DLL, be sure that there are no other DB-Library or ODBC applications running that use the Named Pipes Net-Library. |
THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.
©1997 Microsoft Corporation. All rights reserved. Legal Notices.