Hi Natalie,
We do a near real-time replication of the most significant tables of our Progress database to a SQL Server database using schema triggers. Basically, this involves two steps that amount to a bare-bones, home-spun message queue:
1. Triggers on Progress tables that write contol information to a queue table in the Progress database. To avoid duplication during the actual data transfer, we collapse multiple similar actions to one entry in the queue table.
2. Scheduled DTS tasks that use SQL Server OPEN QUERY in stored procs that read the Progress control table, retrieve the changed data from the Progress tables, and perform the necessary INSERT, UPDATE, DELETE statements in the SQL Server tables.
PROS:
- It's reliable. After we worked out the implementation, the deployment has been very stable.
- OPEN QUERY is fast. AFAIK, You won't approach this performance with the other methods.
- You can tweak the DTS scheduling to create an acceptable balance between system performance and timeliness of the data.
CONS:
- A lot of languages/tools: Progress, Java, TSQL, DTS.
- A high-volume of changes to a single table (heavy transactions) in the scheduled window overruns the ODBC driver or Progress. (We can't get a straight answer to this problem.) Therefore, we can't use this method for our inventory table. BUT any of the options you're considering are likely to run into the same problem for the same reason. So before you pay for a vendor-supplied solution, make them prove it works in your real-world situation.
We implemented this solution in-house in just two months. That was after more than a year of screwing around with a vendor who was trying to implement a proprietary messaging system (not Sonic.) That vendor effort was an abject failure.
HTH and good luck,
harebrain
(If you find this answer helpful, give me a star!)