I am trying to get data off two devices that use SQL Anywhere 9 databases. They both currently run dbeng and I would like to use dbsrv instead so I can query the data from a central location.
I have read this article, but it's kind of lost on me because I'm not starting the process and I don't know what options are being used or assumed to be a specific default value.
I've been thinking about just renaming
Is this an absolutely terrible idea? Is there another way around this? If it does seem like an okay idea, is there anything I can check to make sure that everything is working as expected?
From one perspective, your idea is no different than any other change proposed for a "live environment"... it must be tested.
From another perspective, renaming SQL Anywhere components has been a time-honored tradition for many embedded applications of SQL Anywhere (go ahead, hunt around in Quicken's installation, see if you can find any names you recognize)... so by renaming dbsrv9.exe you will be joining a large club. See Why "Invisible Database"?
Sadly, I do not know of any documents that talk about renaming techniques and the perils and pitfalls thereof... perhaps Mr. Kleisath can pitch in :)
Personal experience indicates that switching back and forth between dbeng*.exe to dbsrv*.exe by simply editing three letters on the command line is an error-free process. In the course of a day I start engines dozens and sometimes hundreds of times, working on articles and blog posts and client assignments and application development, and switching between eng/srv has never been a cause for concern (except, on occasion, when the switch from srv to eng was the wrong thing to do from a limitations perspective). Database damage has never never never never never been caused by switching engines. That's five "nevers", the highest rating :)
The switch from a personal engine (dbengX.exe) to a network server (dbsrvX.exe) is not that complicated - the network server is simply more powerful, and some defaults have different values. Basically, you would just have to replace "dbeng9.exe" with "dbsrv9.exe" in the command line of your application's connection string. (And that's far more senseful than to rename the program file! - I clearly share Martin's point of view).
However, when you are going to switch from a database running locally (and that is possibly auto-started with the application) to a database running on a different machine (that is usually running permanently and commonly running as a service), there are a few more tasks to do:
If that does work, I would finally setup the database server as a service:
But that is not that complex, either.
Note: The links are pointing to the 10.0.1 docs but they should apply to version 9, too. You would just have to replace dbsrv10.exe with dbsrv9.exe...
It is in general a terrible idea to rename a third party tool, you would have to rename the file each time you do an update. And non of your colleagues will ever guess, that the eng is in reality a srv process...
Just use Sybase Central, it provides a wizard to go through the steps of creating a database server. It is really easy.
answered 27 Feb '14, 02:39
Re: I'm not starting the service and I don't know what options are being used or assumed to be a specific default value.
You might try the dbsvc tool to get that information.
Usage: dbsvc [options] -d <svc> delete a service dbsvc [options] -g <svc> get details of a service dbsvc [options] -l list all ASA services dbsvc [options] -u <svc> start service dbsvc [options] -x <svc> stop service dbsvc [creation options] -w <svc> <Details> create service
answered 27 Feb '14, 10:47