Mixing Production with Non-Production
A few weeks ago, I blogged about how simply installing RAD Server prevented access to my currently installed InterBase databases. I did some more testing and research to find out why--and see if I could get around it.
RAD Server uses InterBase to store its sensitive user, group, and resource data. This data is (and should be) encrypted and the database of choice for this task is, of course, InterBase. Encryption in InterBase is handled through a System Encryption Password (SEP). Using the developer license of InterBase on my development machine, I can encrypt databases and every time I access one, it asks for the SEP. No problem.
My Windows server had two previous versions of InterBase on it, IB XE7 and IB 2017 both with unencrypted databases I had used for different projects. The edition of RAD Server that comes with Delphi 10.4 installs InterBase 2020 and gives you an option to use a different port, which I did. I figured I could still access both of the other InterBase instances through the original ports, leaving the new port for exclusive use by RAD Server's InterBase.
That would've worked except for one thing: I was installing a production license of RAD Server. The thing I did not realize is that this overrides existing non-production licenses of InterBase. I could not find this anywhere in the documentation, no warnings came up; even when opening IBConsole and trying to access my other database as before, there was no warning or indication of license violation, only errors--which told me only that something had broken somewhere.
Thus started days of off-and-on trying different configurations of installations and encrypting databases remotely and copying them over and creating new ones from scratch on the server and everything else I could think of, always getting various errors in IBConsole, which combined with a conversation on Delphi-PRAXiS, led me to believe using a non-production license of InterBase on the same machine as a production license of RAD Server was simply not allowed.
So I uninstalled everything but RAD Server and started typing up this blog. I figured it might capture the attention a little better to add one of the error messages as an image here. So I quickly reinstalled a second instance of InterBase again (I can whip through the installation process pretty quickly now!) and pulled up IBConsole and registered one of the databases I had been trying to use.
Before when I had connected the databases, I always made an alias and checked the box to Use Alias for DB Connect. But I was in a hurry so left it unchecked and just finished the registration of the database. When I went to open it, expecting the same access violation I had seen earlier, it opened up just fine!! I could not believe my eyes! I opened a table, edited data, went to a different computer, and registered the remote database (without using the DB alias to connect) and it still worked.
Thinking something else was wrong, I checked to make sure RAD Server was still working and it was. In fact, I could also load the
EMSServer.ib database (the one for RAD Server) and open and view its tables in IBConsole--no SEP requested! Another thought struck me: perhaps my Developer license had now overruled my production RAD Server license. Knowing that the developer license of RAD Server is limited to 5 users, I used RSConsole to add another user (I already had 9) and another one was added just fine. I also checked and both the RAD Server license and the developer license were still installed.
Just to test theories, I removed the database registration and tried to re-add it, this time using the alias to connect and got one of the errors I had seen before: "Your user name and password are not defined." Trying to open it gave me the access violation as I had seen before. But just to double-check, I closed IBConsole, opened it back up and tried to open the table but got the Access Violation again.
So I removed it from IBConsole and then re-added it again but without the alias--and it all works fine!
The TL;DR version is:
- If you want to use non-production InterBase with production RAD Server, install RAD Server first!
- Do NOT use an Alias to connect to databases in IBConsole! It's broken! It requires you to save one but trying to connect with one can give Access Violation errors.
Or, you could use a different database altogether. Firebird 4.0 was recently released!