Skip to Content (Press Enter)
OutSystems.com
Personal Edition
Community
Support
Training
Training
Online Training
Developer Schools
Boot Camps
Certifications
Tech Talks
Documentation
Documentation
Overview
ODC
O11
Forums
Forge
Get Involved
Get Involved
Jobs
Ideas
Members
Mentorship
User Groups
Platform
Platform
ODC
O11
Search in OutSystems
Log in
Get Started
Back to Forums
Matthias Preuter
MVP
725
Views
4
Comments
Change Database connection
Question
I have the following problem:
During a part of the day a readonly database is not available therefor i would like to perform the following steps automaticly (in SQL job):
- change database connection string to copy database, so all application are useing this copy database
- perform update
- change database connection to original database
Is it possible to change the database connection on the fly? I tried to do it from service center but after changing the connection string he applications are still using the previous settings.
I would like to do this with a Timer or sql-job, is this possible?
Kind regards,
Matthias Preuter
Paulo Tavares
Staff
Hi Matthias,
That sounds like you're trying to do some complex things in runtime. What exactly are you trying to do? Is it the whole OutSystems database that you want to redirect the connection string, or is it just a specific database with which you integrate?
Let us know so someone can better try to help you.
Regards,
Paulo Tavares
Matthias Preuter
MVP
Example:
We are using a
Extension_A
that uses a database A (this is configured in the
Database connection DC_DBA
). At runtime i want to change the connection string of
Database connection A
to database B.
Above sample is done manually at Service center Administration / Database Connections /
DC_DBA
, and then change the Server, but when i change this connection string (Server / Catalog / Username / Password) then the
Extension_A
it looks like it's still using the previous DC_DBA connection string.
We have the following questions:
- Do i have to redeploy eSpaces or do a IIS_reset? or is there another way to force that Extension_A uses the new database connection?
- And how can i perform this automatically in a timer or job?
Hope this helps explaining our problem.
Kind regards,
Matthias
João Rosado
Staff
Hi Matthias,
Even though I think the way you are trying to do is the best one for your situation, I would like to present two alternative options for doing this:
You can create both Database Connections in Service Center and then switch Logical Database configuration for the extension each time you want to change (on the Operation tab of the extension in Service Center). Note that this option would be the most usual, but since it requires the compilation of the consumer eSpaces I don't think it is suitable for this particular situation.
You can
create both Database Connections in Service Center and use two different extensions (or just one with both table mappings) and make the logic in you eSpace to call the correct one depending on some availability configuration.
For your situation chaging the configuration in Service Center (like you explained in your post)
actually
seems the best option.
Unfortunately there is no easy way of doing that automatically, since the connection string is not in clear text for security reasons.
As for the problem about "
it looks like it's still using the previous DC_DBA connection string", what feedback does it show when you click the Save button?
A green success mesage or a Warning saying the affected eSpaces need to be compiled?
The only thing necessary to update the connection string of a modified Database Connection usage in an eSpace is a TenantInvalidateCache, unless you change the name of the Database Connection or the Database type (those changes would require the compilation of the eSpace).
I just tryed it and worked perfectly on my server (Platform Server 5.1), what version of the Platform are you using?
Edit:
Also, just to remember you that to make that type of switching, in the entity definition inside in extension the Physical Table Name should not be prefixed by the "database.schema.", unless the servers are really independent and the database name and chema are the same in both.
Regards,
João Rosado
Matthias Preuter
MVP
We are using OS 4.2, after changing the database settings a green succes message appears "Database Connection successfully updated.", but the extension using this db-setting is stil using the old db-settings.
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting.
See the full guidelines
Loading...