It is currently 26 January 2020, 20:37 Advanced search

Istanza database davanti a Tabella in query

Questions and answers on how to best use Instant Developer

Istanza database davanti a Tabella in query

Postby Z4n3tti » 3 October 2019, 9:55

Ciao,

ho creato una query con 4 tabelle in join come mostrato sotto
QueryIDE.PNG
QueryIDE.PNG (28.02 KiB) Viewed 499 times


Fino a qui, nulla di strano, ma guardando il sorgente di INDE, noto qualcosa di strano e che non mi era mai successo, come evidenziato nell'immagine sotto, solo per la tabella "wkf_TabOperatori" mi trovo davanti la stringa "workflow_sviluppo..", questa sembra rappresentare l'istanza del database settata nell'oggetto database, ma che poi a runtime cambia.

NB: nel progetto ho più di un oggetto database con istanze diverse, ma a runtime sono settate tutte uguali.
QuerySorgente.PNG
QuerySorgente.PNG (26.53 KiB) Viewed 499 times


Il risultato della query eseguita su SQL Server è una serie di NULL, se tolgo la stringa sopra indicata, la query funziona come ci si aspetterebbe.

Come posso risolvere questo problema?
Grazie
Z4n3tti
 
Posts: 14
Joined: 30 April 2019, 9:21

Re: Istanza database davanti a Tabella in query

Postby lucabaldini » 3 October 2019, 10:02

La tabella WFTabOperatori si trova nello stesso database in cui si trovano le altre tabelle?

Se non ricordo male InDe mette il nome del DB prima della tabella per poter fare query cross-database...
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 3848
Joined: 1 October 2010, 17:03
Location: Bologna

Re: Istanza database davanti a Tabella in query

Postby lucabaldini » 3 October 2019, 10:04

Se le tabelle si trovano in database differenti l'indicazione del DB sorgente (qualora diverso da quello su cui viene eseguita la query) è obbligatoria:

https://docs.microsoft.com/it-it/sql/relational-databases/in-memory-oltp/cross-database-queries?view=sql-server-2017

In altre parole, vedo che la query viene eseguita sul database che si chiama DATABASEWFBONPRIX (nome logico, non so poi a quale database fisico punti dato che la connection string è scritta nella classe)... se una delle tabelle è su un database differente occorre indicare il nome del DB.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 3848
Joined: 1 October 2010, 17:03
Location: Bologna

Re: Istanza database davanti a Tabella in query

Postby Z4n3tti » 3 October 2019, 10:08

Si in effetti la tabella WFTabOperatori, si trova su un altro database, anche se poi fisicamente sono tutte sullo stesso DB.
Z4n3tti
 
Posts: 14
Joined: 30 April 2019, 9:21

Re: Istanza database davanti a Tabella in query

Postby Z4n3tti » 3 October 2019, 10:16

Ho controllato anche il Debug e la stringa rimane così com'è nel codice sorgente, mi aspetterei di trovare il nome del DB giusto (assegnato dalla stringa di connessione a runtime) e tra i due punti mi aspetterei la stringa "dbo".
Z4n3tti
 
Posts: 14
Joined: 30 April 2019, 9:21

Re: Istanza database davanti a Tabella in query

Postby lucabaldini » 3 October 2019, 10:40

Al momento quello che chiedi non è supportato: query multi-database con cambio di DB a run-time (tramite stringa di connessione).

Potresti:
1) proporre la modifica così ne teniamo traccia, la gente può votarla e, se richiesta, la implementiamo
2) spostare la tabella nello stesso database (InDe non può sapere che le tabelle "poi fisicamente sono tutte sullo stesso DB"... vede due oggetti differenti e si aspetta che a run-time siano differenti)

Qualora non sia possibile spostare la tabella potresti crearne una copia (magari aggiungendo COPY alla fine così ti ricordi) e usare la copia in quella query così InDe le vede nello stesso DB e non aggiunge il prefisso.

Se la cosa ti capita in tanti punti e le tabelle in altri db sono tante ma poi fisicamente sono tutte sullo stesso DB potresti provare ad aggirare il problema con il metodo del database AddQuerySubstitution

https://doc.instantdeveloper.com/?ARTID=2E55376C-B486-4E7B-8C8A-9F409A012D13&LANG=it

per sostituire tutte le istanze di "workflow_sviluppo.." con ""


P.S. La stinga "dbo" non è necessaria e può essere omessa. Se assente SQL Server usa comunque dbo.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 3848
Joined: 1 October 2010, 17:03
Location: Bologna


Return to Tips & Tricks

Who is online

Users browsing this forum: No registered users and 4 guests