1. Gaurang Patel
  2. PowerBuilder
  3. Wednesday, 23 October 2019 19:22 PM UTC

Hello,

I am new to PB community and recently our company purchased and installed 2019 standard license to migrate PB9.0 application we had, which was last  updated in 2010.  Created a  DB profile , giving connection Error " Please connect as PB catalog owner …..  "

Sure this is not the first time question has been asked , can some one point me to solution or step by step process for solution.

 

Thank You,

Gaurang

Michael Kramer Accepted Answer Pending Moderation
  1. Wednesday, 23 October 2019 20:05 PM UTC
  2. PowerBuilder
  3. # 1

Hi, PowerBuilder's IDE looks for 5 tables named PBCATxxx that define a sort of data dictionary that the DataWindow engine in PowerBuilder uses to provide default UI settings for tables and columns. EX:

  • Standard validation rules
  • Standard edit styles
  • Standard labels & headers, fonts, text adjustment, data field sizes

Purpose: To enable consistent display of same data across all UI independent of which developer is building a DataWindow.

When these 5 tables don't exist, PB IDE will try to create them using your DB credentials - and you lacked permissions.

You can decide to opt out of using the PB data dictionary. Result: More manual developer work and risk of less consistency, like one developer using label = Last Name and another using label = Surname. Or one using font pt. Arial, another 10 pt. Arial, and a third 9 pt. Tahoma.

How to disable data dictionary:

  1. Open PowerBuilder IDE's Database Painter (menu: Tools > Database Painter)
  2. Open Database Preferences (menu: Design > Options...)
  3. On tab page = [General], in group = Painter Options) => UNCHECK [Use Extended Attributes]

Extended Attributes is PowerBuilder's name for data dictionary.

Now, your IDE will no longer look for PBCATxxx tables and DataWindow objects are created without the benefit of standard UI settings.

HTH /Michael

Comment
  1. Michael Kramer
  2. Wednesday, 23 October 2019 23:34 PM UTC
See my new reply for what I did to make #3 work for me.
  1. Helpful
  1. Chris Pollach @Appeon
  2. Thursday, 24 October 2019 18:35 PM UTC
FWIW: Your #3 did not work for me in PB2019.
  1. Helpful
  1. Michael Kramer
  2. Thursday, 24 October 2019 19:21 PM UTC
Weird!

Tested again on PB 2019 R2 #2203 with SQL Native Client and MS SQL having @@Version =

Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64)

Oct 28 2016 18:17:30

Copyright (c) Microsoft Corporation

Express Edition (64-bit) on Windows 10 Pro 6.3 (Build 18362: ) (Hypervisor)



What DBMS and DB driver are you using? There could be dependencies I wouldn't think of.
  1. Helpful
There are no comments made yet.
Chris Pollach @Appeon Accepted Answer Pending Moderation
  1. Wednesday, 23 October 2019 20:12 PM UTC
  2. PowerBuilder
  3. # 2

Hi Gaurang;

   Yes, the 1st time that the PB IDE connects to any DBMS database, it will look for the following five tables ...

  • pbcatcol
  • pbcatedt
  • pbcatfmt
  • pbcattbl
  • pbcatvld

   Note that for Oracle, you would need to login from the PB IDE with a user account that can create these tables under the owner "System" (ie" System.PBCatTbl). So from the PB IDE, have your DBA enter their UserID & Password and connect to the DB (or the Oracle DBA can create the above tables using their iSQL tool set). Just as long as these tables as "system" tables.

   Once the DBA has logged into the new Oracle DBMS from the PB IDE once, any PB developer after that with a regular Oracle user account will connect OK from that point onward (no prompts).

HTH

Regards ... Chris

Comment
  1. Gaurang Patel
  2. Friday, 25 October 2019 17:19 PM UTC
Is it good idea to have these catalog tables moved under "system " ?
  1. Helpful
  1. Chris Pollach @Appeon
  2. Friday, 25 October 2019 20:21 PM UTC
Yes, they should always be created under the "SYSTEM" owner in Oracle.
  1. Helpful
  1. Chris Pollach @Appeon
  2. Friday, 25 October 2019 20:22 PM UTC
If you continue under your Oracle ID - then the PBCATxxx tables could only be used by you and not "shared" with other PB developers. Food for thought.
  1. Helpful
There are no comments made yet.
Michael Kramer Accepted Answer Pending Moderation
  1. Wednesday, 23 October 2019 23:37 PM UTC
  2. PowerBuilder
  3. # 3

Hi Chris (reply to comment on #2 reply),

I found below sequence avoids creating PBCATxxx tables in a given database. For my examples here let's call the database Vanilla.

WARNING: Do NOT create DB profile for Vanilla before (2) below!

Each developer should follow:

  1. Open DB Preferences in the DB Painter;
  2. Uncheck "Use Extended Attributes";
    Press OK to close the DB preferences
  3. Now create DB profile for Vanilla
  4. Connect to Vanilla

(2) must happen before (4) 
Just one developer doing (4) before (2) and you get PBCATxxx tables (user is granted CREATE TABLE) or error message (user has no CREATE TABLE access).

Safe/easy road == 1 - 2 - 3 - 4.
Wrong road == 3 - 4 - 1 - 2 ==> This will create the PBCATxxx tables or throw error messages depending on whether the DB login has been granted CREATE TABLE for SYSTEM schema.

I just tested the easy road once more on MSSQL 2017.

/Michael

Comment
There are no comments made yet.
Chris Pollach @Appeon Accepted Answer Pending Moderation
  1. Thursday, 24 October 2019 20:48 PM UTC
  2. PowerBuilder
  3. # 4

Gaurang reported that he was using Oracle - so I am using the same for my testing in this post. Actually, O18C in my case.

Comment
There are no comments made yet.
  • Page :
  • 1


There are no replies made for this question yet.
However, you are not allowed to reply to this question.