I’m trying to get data out of a Progress 4GL database, into SQL Server.
Ideally, I’d like to do this directly and within .NET, rather than through an ODBC driver since the ODBC driver gateway in Progress doesn’t support multiple-cores (at least on the version we have).
Do you know how to connect to a Progress 4GL database from .NET (ideally in C#, but I’m flexible here… 😉 ) ?
Cheers
Nick
If you are using Progress OpenEdge version 10.2 or better you can embed .NET controls directly into a 4GL program. But that would be like swatting a fly with a sledghammer…
And even if it wasn’t the Progress 4GL (the programming language) is aggressively single-threaded and will not support multi-threaded .NET controls.
Both the 4GL and the SQL-92 db engines (Progress supports 2 different interfaces to the storage engine) are multi-threaded and perfectly happy to take advantage of as many cores as you have.
You may however, have a licensing restriction — the “work group” license uses a semaphore based concurrency algorithm in v9 and early v10. (Later versions use a very limited mutex (spin lock).) The “enterprise” db has no such restriction.
Or it is possible that the target system simply hasn’t been setup to support multiple ODBC connections (the db admin should know, key parameters are -Mn, -Ma and possibly -Mpb).
If I were doing this I think that I would simply fake multi-threaded access by starting multiple sessions against different segments of the data.