Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 5 of 5 total
Thread DBSRVR executable version
Sun, Sep 5 2021 9:31 PMPermanent Link

Norman Rorke

Is there any way to retrieve the version of a recompiled DBSRVR executable?

I need this to determine whether the server I'm talking to has the required remote procedure code before I attempt to call or register the procedure.

It seems DBISAM allows a client application (e.g. DBSYS) to register a remote procedure and it's users even when the server does not contain the procedure code.

This being the case, it seems the tidiest way to do this is to interrogate the DBSRVR version number or some kind of user-defined variable. I have temporarily resolved by embedding the version number is the ServerEngine.ServerDescription variable of the server which is a bit clumsy.
Tue, Sep 7 2021 6:45 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Norman,

<< Is there any way to retrieve the version of a recompiled DBSRVR executable? >>

Yes, what you need is this method:

https://www.elevatesoft.com/manual?action=viewmethod&id=dbisam4&product=rsdelphiwin32&version=10.4&comp=TDBISAMSession&method=GetRemoteEngineVersion

<< It seems DBISAM allows a client application (e.g. DBSYS) to register a remote procedure and it's users even when the server does not contain the procedure code. >>

Yes, the server procedures are native and can be conditionally executed, so there really is no way for the DBISAM engine to be 100% sure that a given procedure is or is not actually going to be execute.

Tim Young
Elevate Software
www.elevatesoft.com
Tue, Sep 7 2021 9:41 AMPermanent Link

Norman Rorke

Tim Young [Elevate Software] wrote:

Norman,

<< Is there any way to retrieve the version of a recompiled DBSRVR executable? >>

Yes, what you need is this method:

https://www.elevatesoft.com/manual?action=viewmethod&id=dbisam4&product=rsdelphiwin32&version=10.4&comp=TDBISAMSession&method=GetRemoteEngineVersion

<< It seems DBISAM allows a client application (e.g. DBSYS) to register a remote procedure and it's users even when the server does not contain the procedure code. >>

Yes, the server procedures are native and can be conditionally executed, so there really is no way for the DBISAM engine to be 100% sure that a given procedure is or is not actually going to be execute.

Tim Young
Elevate Software
www.elevatesoft.com


Hi Tim,

Thanks for responding.

Unfortunately GetRemoteEngineVersion returns the Engine version. What I am after is the version of the server executable. Whenever I add new code to the server I bump the project version up before recompiling. If I could check the exe version from within a client application I would be able to tell whether the server contains a given procedure. I assume this is not possible so I'll continue resolving by appending the version no to the Server Description which my client applications can interrogate.

By the way, this is a prefect candidate for remote user-defined variables that could be read by client applications. Any chance of adding something like that in ElevateDB?
Thu, Sep 9 2021 7:43 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Norman,

<< Unfortunately GetRemoteEngineVersion returns the Engine version. What I am after is the version of the server executable. Whenever I add new code to the server I bump the project version up before recompiling. If I could check the exe version from within a client application I would be able to tell whether the server contains a given procedure. I assume this is not possible so I'll continue resolving by appending the version no to the Server Description which my client applications can interrogate. >>

Ahhh, in that case you can create a server procedure that simply returns the .exe version information.  Then you could just call this server procedure before trying to call one of the other server procedures.

<< By the way, this is a prefect candidate for remote user-defined variables that could be read by client applications. Any chance of adding something like that in ElevateDB?  >>

Probably not, primarily because it's just as easy to use a table for such a purpose.

Tim Young
Elevate Software
www.elevatesoft.com
Thu, Sep 9 2021 7:16 PMPermanent Link

Norman Rorke

<<Ahhh, in that case you can create a server procedure that simply returns the .exe version information.  Then you could just call this server procedure before trying to call one of the other server procedures.>>

Of course!
That should be the very first server procedure to implement.

Thanks Tim
Image