Schema names with multiple dots


(estebanp) #1

Hi guys,

I need to confirm if this is a bug on my current instalation of RO/DA. The DataAbstract Schema modeler is not showing tables with schema names that include multiple dots (namespaces).

e.g.
gx.core.Table1
gx.core.Table2
gx.registar.Table1
gx.registar.Table2

Single name space schemas work fine
e.g.
gx.Table1
gx.Table2

Also, the Connection String builder doesnt carry over the Schemas=1 parameter to the Connection String box. In order to reproduce just open a connection builder, enter all the data, remove the Integrated security parameter and just leave the “Schemas=1;” once you click Ok, you will see the schema parameter not included.

Im using the latest DA with FireDac connection to MSSQL 2014.


(RemObjects) #2

Thanks, logged as bugs://79472


(RemObjects) #3

Thanks, logged as bugs://79473


(EvgenyK) #4

looks like, this is a bug in MSSQL system functions - it can’t detect properly OBJECT_ID for such tables:


I’ll see what we can use instead of it.

This is a bug in DASM.

workaround: specify this parameter manually in this window:
Untitled


(RemObjects) #5

bugs://79472 got closed with status fixed.


(EvgenyK) #6

workaround :

  • pls update uDAADOInterfaces.pas as
see code
procedure MSSQL_DoGetNames(Query: IDAServerDataset; AList: IROStrings; AObjectType: TDAObjecttype; SchemaEnabled: Boolean);
..
      dotTable: begin
        if not SchemaEnabled then fWhere:='WHERE (t.name = ''dbo'') ';
        Query.SQL := 'SELECT '+
                     's.name, t.name '+
                     'FROM sys.tables t '+
                     'join sys.schemas s on (s.schema_id = t.schema_id) '+
                     fWhere+
                     'ORDER by 1,2';
        end;
      dotProcedure: begin
        if not SchemaEnabled then fWhere:='WHERE (t.name = ''dbo'') ';
        Query.SQL := 'SELECT '+
                     's.name, t.name '+
                     'FROM sys.procedures t '+
                     'join sys.schemas s on (s.schema_id = t.schema_id) '+
                     fWhere+
                     'ORDER by 1,2';
        end;
      dotView: begin
        if not SchemaEnabled then fWhere:='WHERE (t.name = ''dbo'') ';
        Query.SQL := 'SELECT '+
                     's.name, t.name '+
                     'FROM sys.views t '+
                     'join sys.schemas s on (s.schema_id = t.schema_id) '+
                     fWhere+
                     'ORDER by 1,2';
        end;
..
  • recompile DAFireDACDrv.dpr with any unicode version of Delphi.
  • put compiled DAFireDACDrv.dad into C:\Program Files (x86)\RemObjects Software\Data Abstract (Common)\Bin

or just wait for this week beta.


(RemObjects) #7

bugs://79473 got closed with status fixed.


(estebanp) #8

Thank you very much for your time Evgeny.