Diff between Sybase schemas where schema owners not DBO

 

Liquibase is failing to compare Sybase objects which don’t reside in the dbo schema.

 

Scenario:

 

I’m using Liquibase to diff between several Sybase ASE15 databases (serving the DEV and UAT user communities).

My requirement is to use Liquibase to discover differences between any 2 schemas.

 

Each database contains several schemas:

dbo (the default)

  • UserA (containing tables and other objects created by a developer)

  • UserB (another developer’s objects)

. . . and so on.

 

Liquibase works fine when comparing objects in the  dbo schema of one database against the dbo of another database.

 

However if I launch Liquibase with userName of a dbo  and referenceUsername of a non-dbo, then the Liquibase “diff” report shows a whole lot of Missing tables . Presumably because it could “see” all the dbo tables in the reference schema but none of the tables in the Target schema.

 

Here’s an example of this type of problem:

 

liquibase \
 --url=“jdbc:sybase:Tds:uatbox.widgit.com:4100/TESTING” \
  --username=test_dbo --password=parrot \
  diff \
  --referenceUrl=“jdbc:sybase:Tds:devbox.widgit.com:9000/DEVELOPERS” \
  --referenceUsername=scott --referencePassword=eagle

And the results:

 

Diff Results:
Reference Database: scott @ jdbc:sybase:Tds:devbox.widgit.com:9000/DEVELOPERS
Target Database: dbo @ jdbc:sybase:Tds:uatbox.widgit.com:4100/TESTING
Product Name: EQUAL
Product Version: EQUAL
Missing Tables: 

     CARS
     COLOURS

     DOORS

     LAMPS

     ENGINES

     WINDOWS

. . . and so on (none of scott’s tables are matched)

 

 

Liquibase exhibits similar behaviour if referenceUsername is a dbo and username is a non-dbo.

The output is like above, except it’s a long list of Unexpected Tables instead of Missing ones.

 

I’ve tried using the –defaultSchemaName option but that doesn’t help.

 

Any suggestions much appreciated. This is an important problem for me because I’ve got a large community of developer schemas with subtle differences between them which I need to discover and fix.

 

Thanks!

 

Stuart