Every SQL92 connection to a Progress OpenEdge database requires user credentials that have corresponding rights granted.
There are several facts that need to be considered when introducing SQL clients to a Progress database:
- The Progress database is no SQL database in the first place - its a 4GL database. It is particular about mixing and matching 4GL and SQL functionality with the respective engines. That means all SQL privileges need to be set up regardless how security is set up on the 4GL side.
- The 4GL engine utilizes a revoke philosophy whereas the SQL engine goes with the grant philosophy. That means: You don't grant it you can't access it.
- Users in the 4GL _User meta-schema are meaningless to the SQL engine with 1 exception.
In order to access a the database via the SQL engine the first time you have two options for the user credentials:
- The credentials of the OS account under which the database was created. This account is considered to be the "owner" of the database and has DBA privileges per default.
- The credentials of the account SYSPROGRESS created in the _User with the 4GL data administration tool ( that's the exception I was referring to above ). This account is granted DBA privileges per default.
When you've established a SQL connection to the database with either one of the above accounts you can then from there on
- Grant users that exist in the 4GL _User table privileges - which makes them known to the SQL engine
- Create users with the SQL CREATE USER statement and grant them privileges.
The restored copy of the production database might not contain any of the above.
By the way: Do you have 4GL and SQL clients connecting to the database? If yes, did you consider to set up a secondary login broker so that each client type ( 4GL or SQL ) connects to its dedicated login broker?
Heavy Regards, RealHeavyDude.