Advantage Developer Zone


8.1 Update ( now available

An 8.1 service update ( has been posted to the Developer's Zone download area at

Mike Hagman
Product Manager
Sybase iAnywhere

This Service Update addresses the following issues: - Advantage .NET Data Provider
This Service Update of the Advantage .NET Data Provider addresses the following issues:

Fixed an issue in the .NET Data Provider that prevented the AdsParameter Value property from being edited in the Collection editor.

Changed the Advantage .NET Data Provider to not throw a first chance exception when parsing a connection string that didn't specify the Server Type as a numeric value.

Fixed a bug where the ADO.NET Data Provider could not create update commands in Visual Studio 2008. A message box with the following content was generated: "Some updating commands could not be generated automatically. The database returned the following error. This object has been deleted." - Advantage Client Engine (ACE)
This Service Update of the Advantage Client Engine (ACE) addresses the following issues:

Modified the server to allow a table to be fully closed inside a transaction if it has not been updated.

Fixed an access violation when a scripted stored procedure was created with a length greater than 64k.

Fixed an issue where various operations in ARC could result in an "Invalid Floating Point Operation" error.

Removed all initialization logic from DllMain's DLL_THREAD_ATTACH code for both ace32.dll and adsloc32.dll. DllMain is now a no-op for thread attach calls. Previously, it made some calls that would allocate some per-thread memory, which could result in acquiring a critical section. If another thread locked the process heap, this could result in deadlock during the thread creation. The initialization now happens on demand when a thread running in ace32.dll needs the per-thread memory.

Fixed an issue where applications that read and write the ads.ini file could not use an ads.ini file in a specific directory if another ads.ini file already existed in the c:\windows directory. Added support to read an environment variable called adsini_path, and use that path to locate the ads.ini file. This variable can be set in the user's environment, or set programmatically by the application. This variable is also useful in Windows Vista installations, to allow the ads.ini file to live in a shared public folder. - Advantage Communication Layer
This Service Update of the Advantage Communication Layer addresses the following issues:

Fixed a 9003 error on the server when a TCP/IP connection switched over to shared memory communication. - Advantage Crystal Reports Driver
This Service Update of the Advantage Crystal Reports Driver addresses the following issues:

Fixed an issue with the Crystal Reports and ODBC drivers using numeric fields of data dictionary bound DBF tables. Crystal Reports would return a 22012 error. - Advantage Data Architect (ARC)
This Service Update of the Advantage Data Architect (ARC) addresses the following issues:

Fixed an issue where ARC would report the error "unable to locate size row for new field" when modifying table properties.

Fixed an issue where the "add existing index" quick menu option was provided on free tables when it should not be. If selected it would cause an access violation.

Fixed an issue when comparing dictionaries where an ALTER TABLE statement was generated for a table without the 'ALTER TABLE' preamble.

Fixed an issue where a connection was not closed when using the Remote Management Utility when only a server name was given in the connection path.

Fixed an issue where Advantage Data Architect creates an incorrect CREATE PROCEDURE statement for COM AEPs.

Fixed an issue where ARC would raise an access violation when trying to show the execution plan of a query that resulted in an error.

Fixed an issue where ARC would display system field properties when connected to a version 9.x server. Also fixed an issue where ARC would generate unnecessary calls to sp_ModifyFieldProperty when generating SQL or comparing dictionaries.

Fixed an issue where hitting enter in the connection password dialog could cause a table, procedure or view to be opened depending on how the connection repository tree view expanded.

Fixed an issue where the ARC dictionary comparison utility would raise 5004 errors if the client did not have rights to either data directory. - Advantage Database Server
This Service Update of the Advantage Database Server addresses the following issues:

Modified the server to improve query performance when querying a table that has many deleted rows at the beginning of the table.

Fixed an issue that allowed tables to be removed from publications while pending entries for that table existed in replication queues, which could result in 9126 errors being logged.

Fixed an issue where the server logged an unnecessary 7035 error.

Fixed an issue where silent installations would display an error when an invalid serial number or validation code was entered. A new installation option (FAIL_ON_INCORRECT_VALCODE) was added to correct the problem.

Fixed an issue that caused Go Top and Go Bottom operations to be slow in index order when the table is encrypted. The problem could also result in 4000 class errors such as 4013.

Fixed an issue where a 5021 error was returned when sp_DisableQueryLogging was called with a proceeding call to sp_EnableQueryLogging.

Fixed an issue where stored procedures and triggers were not using tables that had been cache closed. This resulted in excessive work area consumption as well as decreased performance.

Fixed an issue where replication can fail to forward updates if the servers involved have the same server name and data dictionary path.

Fixed an issue where a TCP/IP connection was not cleaned up when the network cable was pulled from the back of the server.

Fixed an issue where the AOF segment combination algorithm was not using all multi-segment indexes.

Fixed an issue where upgrading Advantage using adsstamp from an evaluation license to a full valcode license could cause ADS to fail to start properly.

Fixed an issue with query logging using an encrypted free table for the log.

Validated server operation with Windows Server 2008.

Fixed an issue where an empty string column in a DBF table was returned as null.

Fixed an issue where spaces were not trimmed from the alias name in a server-side alias.

Decreased the amount of memory allocated by the Advantage Database Server when creating temporary indexes for SQL queries.

Fixed an issue where the server may crash if a memory allocation fails when building trigger __new and __old tables.

Fixed slowness in AdsRestructureTable (or SQL ALTER TABLE) when operating on DD bound encrypted tables with FTS indexes.

Changed sp_GetTables to return free tables even if the extension is not included in the table name input pattern.

Fixed an issue that could cause a server crash if a memory allocation failed.

Fixed an issue where it was possible for record decryption to fail due to concurrency problems with dynamic cursors and AOFs built on encrypted tables. The issue could affect replication and triggers and sometimes would manifest as memory allocation failures (error 7001) in the error log.

Fixed a memory corruption issue when renaming a connected user.

Fixed an issue where the server would crash when trying to restore a database from a corrupted backup image.

Fixed an issue where calling sp_EnableQueryLogging would cause the server to crash.

Fixed an access violation when parsing options for backups.

Fixed an issue where the server could crash after failing to allocate enough memory to read a memo field.

Fixed an issue where ADS for Linux can crash if a large number of files and TCP sockets are opened when ulimit has been used to increase the number of allowed file opens.

Fixed an issue where differential backups were not correctly managing recycled memo pages, which could lead to memo corruption in a restored database image. It is recommended that anyone using differential backups re-initialize their backup image after installing this service update.

Fixed an issue where the server would crash if a transaction rollback could not complete because another process (a backup utility, for example) had a table, index, or memo locked at the time of the rollback operation.

Changed the default open behavior of files opened with Advantage proprietary locking. In the past, Advantage would open files in a "deny write" mode, allowing other non-Advantage processes to open the files read only. While this approach allows non-Advantage applications such as backup, reporting and virus scanning software to open Advantage data files, it also allows them to lock bytes in these files, which can cause Advantage read and write errors, many of which can lead to index corruption. The new default behavior for proprietary locking is to open data files exclusive, only allowing access to them via the Advantage Database Server. In this configuration backups must be done with the adsbackup.exe utility or via the sp_BackupDatabase/sp_BackupFreeTables canned procedures. If you would like to revert to earlier "deny write" behavior, see KB item 081023-2093 at

Fixed an issue where a partially encrypted table's memo data could become corrupted after packing the table.

Fixed an issue that caused a 7008 error when executing "SELECT ... INTO #temp ... " inside a transaction.

Fixed various scalar functions in the query engine to handle milliseconds properly.

Fixed an issue where complex algebraic expressions in the where clause could render incorrect results.

Fixed an issue that caused performance degradation when a SELECT statement had many LEFT JOINs followed by INNER JOIN.

Fixed an issue that could cause an SQL script to evaluate slowly when variable or cursor columns where used in SQL statements.

Fixed a bug where multi-table UPDATE statements with a subquery in the FROM clause would be evaluated incorrectly.

Fixed a bug that caused a 2146 error when a DBF numeric column with the maximum length (32) was involved in a Sum() aggregate that was part of a unioned SELECT.

Fixed an issue where the "not equals" operator returned incorrect results when used on raw/binary fields in an SQL statement.

Modified implementation of converting binary data into character data to be the exact reverse of converting character data into binary data.
Fixed an issue that caused poor query performance when a subquery was used indirectly in an algebraic expression.

Fixed a server crash when executing a statement with more than 1000 UNION clauses.

Fixed an issue where sp_mgGetSQLStatements incorrectly indicates that certain queries producing static cursors are active.

Fixed an issue that caused the server to crash when executing an SQL script statement RAISE with NULL as the exception message.

Fixed an issue in the SQL engine that caused evaluation of the boolean AND expression to return incorrect results when one of the operands was NULL.

Fixed an issue where the query optimizer would not generate optimal execution plans for certain parameterized queries. The queries that would suffer from this issue must have at least three tables in an INNER JOIN and the parameter must be used in an equal restriction on the primary key column in one of the tables.

Fixed an issue that would cause a server crash when executing an SQL query that had an empty table with deleted records and an unoptimizable constant restriction on the table. - Advantage PHP Extension
This Service Update of the Advantage PHP Extension addresses the following issues:

Changed ads_result_all to return an error with severity of E_NOTICE rather than E_WARNING when called on a result that does not have a cursor. - Advantage TDataSet Descendant
This Service Update of the Advantage TDataSet Descendant addresses the following issues:

Fixed an issue where TAdsConnection.Rollback would cancel pending updates in all datasets associated with the connection. Added a new property, CancelOnRollback, which can be modified to change the default behavior.

Fixed issues with the TDataset Descendent when running on 64 bit OSes in /LARGEADDRESS aware applications.

Fixed an issue where TAdsTable.CreateTable would not work with FMTBCD fields.

Fixed an issue where TAdsConnection.Execute could raise an overflow exception in rare cases when caching statement handles.

Modified components to support RAD Studio (Delphi and C++Builder) 2009.

Fixed an issue where changing the IndexName property with a master/detail relationship set would cause OnFilterRecord events to execute on the full detail dataset, as opposed to just the records that matched the master key.

Fixed a NULL reference exception when doing a locate using the TDataSet Descendant for .NET.

Fixed an access violation when freeing a TAdsQuery or TAdsTable component in the finalization section of a unit.

Fixed an issue where SQL statements that had strings containing a colon would return a 5101 error. - Advantage Visual Objects Driver
This Service Update of the Advantage Visual Objects Driver addresses the following issues:

Fixed an issue with the ADSADT RDD where modifying a record that has a record number greater than the record count can fail with a lock required error.

Fixed an issue where the RDD would return a 5068 (AE_NO_CURRENT_RECORD) error if the work area was not positioned on a record (e.g. after a failed seek).

Fixed an issue where temporary indexes created on SQL cursors were not available for use. Only the last index created was available.