Just a follow-up to an older and not really answered question on DbTools:

I have just noticed another case where the database tools (both the utility exe and the DbTools API call) do not work across versions:

Running the V8 DBREMOTE.EXE (or DbRemoteSQL()) against a V12 database fails with the error "The property 'FileVersion' is not supported anymore." (translated from German).

While it seems reasonable that some of the database utilities from older versions cannot handle newer database versions, I am still puzzled whether this a general restriction or based on the particular utilities. - As Karim pointed out in his answer to the older question, in general the DbTools API should be compatible, and that has been my understanding so far. But the current tests seem to contradict.

Some clarification is highly appreciated:)


Note: I'm about to port the application to use the V12 DbTools API, so that's no showstopper in any way...

asked 15 Sep '10, 14:44

Volker%20Barth's gravatar image

Volker Barth
30.8k308456665
accept rate: 32%

Just to add: After all, linking against a newer API version is not that hard:)

(15 Sep '10, 15:41) Volker Barth

Just found a (mostly clarifying) description in the include file dbtools.h - seems to be there since at least V10.

The description seems to fit my tests that the DbTools API is only compatible within the same major version (say 11.0.x). However, that seems to contradict the wording in the docs - something to correct?:

The data structures defined in this file can be used with the DBTools API for the major version of SQL Anywhere to which the file applies. Applications built using, for example, the version 10.0.0 dbtools.h file will NOT be able to access dbtool9.dll or dbtool11.dll.

The next paragraphs point out how compatibility within the same major version (i.e. between 11.0.0 and 11.0.1 etc.) is handled:

Within a major version, any changes to the structures will be made in such a way that applications built with earlier or later versions of dbtools.h FOR THE SAME MAJOR VERSION will work. Applications built with earlier versions will not have access to new fields, so DBTools will provide default values which give the same behavior as in earlier versions. Generally, this means new fields added in point releases appear at the end of a structure.

The behavior for applications built with later versions within the same major release depends on the value provided in the "version" field of the structure. If the version number provided corresponds to an earlier version, the application can call an earlier version of the DBTools DLL just as if the application was built using that version of dbtools.h. If the version number provided is the current version, attempting to use an earlier version of the DBTools DLL will result in an error.

See dbtlvers.h for version number defines.

permanent link

answered 15 Sep '10, 15:40

Volker%20Barth's gravatar image

Volker Barth
30.8k308456665
accept rate: 32%

2

The comment you found describes the compatibility of the API itself (the data structures used, parameters to entrypoints, names of entrypoints, etc) not the compatibility of the client code within dbtools to communicate successfully with newer servers (which is the problem you are running into). I don't know what the official general policy is for that latter kind of compatibility but sometimes features are removed from newer server versions. If, however, v12 claims to support v8 dbremote clients (and I'm not sure that it does) then this particular problem should be reported as a bug.

(15 Sep '10, 17:50) John Smirnios

@John: Mmmh, so I'm somewhat on my own to find out whether a DbTools app is compatible with a different version or not? - At least comparing with the particular version's utilities will tell whether a compatibility issue seems to appear only with my own app or the appropriate utility, too. - But I still would get more feedback here...

(16 Sep '10, 14:22) Volker Barth
Comment Text Removed

@World: Any more feedback is still very welcome!

(28 Oct '10, 07:43) Volker Barth

Not as an answer - but just to show I still would like to get more feedback on this, I quote from my comment on my first answer:

@John: Mmmh, so I'm somewhat on my own to find out whether a DbTools app is compatible with a different version or not? - At least comparing with the particular version's utilities will tell whether a compatibility issue seems to appear only with my own app or the appropriate utility, too. - But I still would get more feedback here...

permanent link

answered 25 Nov '10, 08:23

Volker%20Barth's gravatar image

Volker Barth
30.8k308456665
accept rate: 32%

I think you will need to ask via tech support what guarantees we provide that old dbtools will work against newer servers. In your case, you are using an unsupported (v8) dbtools against a newer server and the v8 code is using a server feature that has been removed. I doubt we want to reintroduce a that feature into current versions of the server just to support an out-of-support dbtools library. Chances are that you will be advised to upgrade the client but, of course, I could be wrong. The problem here is less of a technical issue and more of a business decision.

(25 Nov '10, 18:05) John Smirnios

@John: Thanks for your suggestions. - Well, I guess I should close this issue. I have been looking for some kind of general guideline, and obviously there's none publically available. So I'm gonna concentrate on the practical issues, and in this case, the solution is clear, i.e. to use the V12 dbtools API. As the according client app is already linked with V12 and has passed all tests (and this hasn't really be a difficult task), let's consider this gone:)

(25 Nov '10, 21:49) Volker Barth
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×412
×78
×31
×15
×7

question asked: 15 Sep '10, 14:44

question was seen: 1,254 times

last updated: 25 Nov '10, 08:23