Without any public beta or pre-announcement, the most recent version of Advantage Database Server was released on October 21st 2015. This is the first version released after a new team took over the development in 2014. The list of enhancements contains lot of long awaited features, but also little improvements that will make developer’s live easier. A complete list of new features can be found in the online help files at the Advantage Developer Zone. I will investigate feature by feature in additional blog posts.


Very disturbing for long time ADS users: Downloading the software is no longer available via Advantage Developer Zone. You need to use SAP Service Marketplace instead. This download portal requires a valid partner account and I guess most of the developers just used ADS (or Local Server) and don’t have a valid partner contract with SAP. The only way to get around this is to register for an evaluation version. The evaluation version is available in two editions: one for Windows 64 Bit (161MB download size) and one for Windows 32 Bit (264MB download size). Linux evaluation was not available at the time of testing.
My first thought on these downloads was: Whow! Great! Finally the development team took one of my wishes and created a single install for Advantage Server, Clients, and Tools. But when unzipping the files I got a directory for each download, containing all the single installs. The most important tool, Advantage Data Architect, is only part of the 32Bit installations. So when you plan to use ADS in a 64Bit environment you’re forced to download the 32Bit installs aswell. The Advantage Client Engine adds ~20MB to each installation (extracted size). Having a combined installation with the ACE only once would save a lot of space.


SAP branded ADS 12 Installation Wizard
SAP branded ADS 12 Installation Wizard

The installation itself went smooth – as it always used to be with ADS. The only difference: it’s now SAP branded and you’ll find the blue and white color scheme all over the place. After the installation is finished, the configuration utility appears on the screen. Adapting the SAP brand led to a minor hazzle: The „Operations Since Started“ moved slightly down behind the logo and is not aligned to the describing label.

Advantage Configuration Utility
Advantage Configuration Utility

Installing the Advantage Web Platform failed in my VMWare environment with error „platform not supported“, but succeeded on my development laptop. Strange, since both are one the same architecture (Win64), operating system (Windows 8.1) and patch level. I need to investigate this further. A similar installation issue happened when I installed the Advantage API and then the Delphi Client (adsdelphi.exe) afterwards. The installation simply failed. Uninstalling the ACE API solved the issue. In the past installation errors happened only during the beta phase.

Server Side features

Besides improved performance and better memory handling there have been only little changes to the server itself. In ADS 11 the root dictionary was introduced. This is kind of a system database for the ADS installation itself. When using a root dictionary it has to be specified in the server configuration.

Root Dictionary Configuration
Root Dictionary Configuration

Prior to ADS 12, a connecting client that wanted to use the root dictionary has to know the exact path. New in Version 12 is a System Alias named __rootdd which points to that database. This makes it easier to set up e.g. the Web Configuration Utility which is part of the Advantage Web Platform. For Data Dictionaries a new property was added that allows to define a maximum value of failed logins on the remote connection before the users gets locked. This can be useful to prevent Brute Force attacks to the database. Prior to ADS 12 this security feature was only available for Internet Connections.

Web Platform

The mentioned Advantage Web Platform provides the ability to access data via http(s) connections. It contains an Apache Web Server (listening by default to port 6272) and the adsweb module. New in version 12 is ETAG support for better concurrency control in web clients and support for the $select option to limit the columns transferred on http GET operations.
A new client was also developed for the Web Platform: Delphi users can now install the Advantage Delphi OData Client, a collection of components to access the Web Platform via http(s). This component set is based on the Delphi REST client, initially released in Delphi XE5. Since no interaction to the Advantage Client Engine and its underlying Windows DLLs is required, developing cross platform applications against ADS servers is now much easier.

New and updated Clients

Regarding clients: ADS 12 added support for PHP 5.5, PHP 5.6, Delphi XE8 and Visual Studio 2013. Unfortunately the latest versions (Delphi 10 Seattle and Visual Studio 2015) are not supported by the initial release. ADS support confirmed that this adoption is currently under development and will be released soon.

Database Enhancements

ADS 12 introduces several new field types. GUID (Type 29) is a 16-byte raw field type to store a Global Unique Identifier. LONGINT (Type 19) represents a 64Bit (8-Byte) integer type with a range from -9,223,372,036,854,775,807 to 9,223,372,036,854,775,807. MEMO, NMEMO (unicode) and BLOB content can now be compressed.
I did a comparison between a compressed and an uncompressed BLOB field: Adding 100 times a ~5MB open document file (Open Office) or portable document file (PDF) to the tables resultet in almost no difference between the compressed and the uncompressed version. So I repeated the test with a ~5MB plain text file (lorem ipsum…). This time the uncompressed blob file was around 489MB, the compressed one only 11MB. This leads to the conlusion that the compression algorithm being used is optimized for plain text. I didn’t see any performance penalties during the test.
To create a compressed BLOB, a new Option was added to the field designer in Data Architect. In SQL use the keyword COMPRESSED:

CREATE TABLE CompressionTest2(id AutoInc, files Blob COMPRESSED) IN DATABASE;

Compressed fields are no new field types: Field Option 65536 (0x10000) specifies it as compressible.
By the way: all new field types are also available for DBF table type. But you need to be careful. Using such a field type or option in DBF tables will make them uncompatible with legacy drivers.
With ADT table type recycling of unused memo blocks has been improved and the memo block size is now configureable up to 32,768 Bytes per block (prior: max 1024 Bytes). This can greatly reduce the memo file size. The memo block size on existing tables can be changed through a pack or an alter table. In order to gain from the new reuse algorithm, existing tables have to be packed.


Productivity Enhancements

The SQL engine now supports GROUP_CONCAT aggregat function and Muli-Row INSERT statements. I’ll follow up with the SQL engine in an extra Blog Post.
In order to improve filters and ORDER BY clauses, a further alignment of the SQL engine and the expression engine (used for navigational data access, filters, indexes) took place. Some SQL scalar functions where added to the expression engine and vice versa. New scalar functions, including BASE64ENCODE and BASE64DECODE, have been added to both engines.

Most restructures of a table can now be done online without having all users to close the table for the final stage. The same for adding indexes or performaing a reindex. A checkbox has been added to Data Architect to perform restructures online.

Databases can now be backed up into an archive (tar) or packed archive (tar.gz) file. This can be done via the option ArchiveFile or ArchiveFileCompressed (Data Dictionaries based and free table based databases):

EXECUTE PROCEDURE sp_BackupDatabase( 'C:\databases\TestV12\backup', 'ArchiveFileCompressed=testV12.tar.gz'); EXECUTE PROCEDURE sp_RestoreDatabase( 'C:\databases\TestV12\backup\TestV12.add', '',
'C:\databases\TestV12\restored\TestV12.add', 'ArchiveFileCompressed=testV12.tar.gz';)

Differential backups of free table databases don’t require an explicit initialization any more when an index definition has changed. This is now done automatically by ADS.

In ADS 12 database triggers can be used to log or influence database events like CONNECT, DISCONNECT, OPEN_TABLE and CLOSE_TABLE. Within these triggers an __INFO table contains read-only information about the event, like UserID, UserName, ClientName, LoginName and Address, just to name a few.


ADS 12 is not the big, disruptive release some might have expected. But it contains a lot of smaller enhancements that can be very productive. Enhanced online maintenance, backing up into a packed archive file and improved differential backup are beneficial to shorten or remove shut-down times, developers have more options to track connections, can use more field types, compress BLOB data and so on. Database triggers are step into the right direction, but I still miss events on internal system views (system.tables, system.indexes, …).
No public beta is definitely not the way to go. Noone within SAP is able to test new ADS features in a real world scenario. This can only be done by power developers working with ADS for a long time.
I’m also not happy with the new distribution. Developers and Server Admins need to download clients that are never needed, important utilities like Data Architect are only part of the Win32 installation and the Client Engine is contained multiple times. It might have been better to create one huge setup that contains all of the clients, servers and tools as optional installs instead of having one setup for each client. Advantage Developers without a partner contract are not able to download the linux files.

First look at ADS 12
Markiert in:     

2 Kommentare zu „First look at ADS 12

  • Pingback:Tutorial: using ADS with Lazarus – Joachim Dürr softwareengineering

  • 6. Februar 2019 um 20:24 Uhr

    That was it! I had all of the files in the ‚Redistribute‘ folder. I used PE Explorer to view the .BPL file, and I looked at the dependencies, and I saw AdsAdditionalDesigners.dll and I did not have that in the \Windows\System32 (it’s 32 bit Windows).

    Now I have to install this on 2 more PC’s I hope it doesn’t take all day!

    Thank you!


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert