Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi View in Use - Auch wenn nicht mehr darauf zugegriffen wird (https://www.delphipraxis.net/194894-view-use-auch-wenn-nicht-mehr-darauf-zugegriffen-wird.html)

Emwykey 17. Jan 2018 08:59

Datenbank: Firebird • Version: 2.5.4 • Zugriff über: FireDAC

View in Use - Auch wenn nicht mehr darauf zugegriffen wird
 
Hallo liebe Community,

ich habe leider immer wieder folgendes Problem:

Es werden auf eine Auswahl abgestimmte Daten in einem View geladen - D.h. der selbe View wird bei jedem Aufruf eines Programmpunktes oder eines Reports mit den entsprechenden Bedingungen ReCreated um das Ergebnis auf die Auswahl zu beschränken. Das funktioniert auch meistens problemlos ( abgesehen von der Situation, wenn die selbe Auswertung geöffnet wird, sofern diese noch offen ist, das ist aber kein Problem ) - allerdings kommt es ab und an zu der Problematik, dass trotz geschlossener Auswertung und somit beendeter Abfrage der View nicht freigegeben wird und somit beim nächsten Aufruf nicht mehr mit den entsprechenden Bedingungen erstellt oder ReCreated werden kann ( tritt auch auf, wenn explizit ein Drop und daraufhin ein Create ausgeführt wird. ) Das ganze geht dann so weit, dass nicht einmal ein Neustart der gesamten Anwendung Abhilfe schafft, nur der Neustart des Firebird Servers selber gibt den View wieder frei.

Woran kann das liegen?
Gibt es hier Einstellungen im FB Server welche ich anpassen / prüfen sollte?
Kann ich in der Anwendung per SQL Anweisung eine Freigabe erzwingen ( beim schließen der Auswertung ) ?

Vielen lieben Dank schon mal im Voraus

PS: es gibt abgesehen von dem Problem und der Neuerstellung mit anderen Bedingungen keine Gemeinsamkeiten zwischen den einzelnen Views

jobo 17. Jan 2018 09:21

AW: View in Use - Auch wenn nicht mehr darauf zugegriffen wird
 
Ungewöhnliches Konzept!
Ist das eine lokale DB?

Also mein Ansatz wäre, entsprechende Filter in einer Where Bedingung an den Aufruf des Views zu hängen. Warum das nicht so gemacht wird (standard) kann ich nicht beurteilen.

Hier hilft es vielleicht, spezifische Views pro User/Report anzulegen, eben in dem Grad, dass alle simulatanen Zugriffe auf eigene, temporäre Views gehen. Wegwerf Views halt. (Das macht man normalerweise mit Select Statements.)

Jasocul 17. Jan 2018 09:33

AW: View in Use - Auch wenn nicht mehr darauf zugegriffen wird
 
Zitat:

Zitat von Emwykey (Beitrag 1391184)
D.h. der selbe View wird bei jedem Aufruf eines Programmpunktes oder eines Reports mit den entsprechenden Bedingungen ReCreated

Wie macht ihr das? Über Drop und Create?
Das scheint ein bekanntes Problem in FB zu sein:
http://tracker.firebirdsql.org/browse/CORE-2613
Im letzten Kommentar steht, dass es unter FB 2.5 zu Problemen kommt.
"Alter View" sollte demnach aber funktionieren.

Emwykey 17. Jan 2018 10:45

AW: View in Use - Auch wenn nicht mehr darauf zugegriffen wird
 
Hallo danke erstmal für die Antworten.
Die Bedingungen werden im View selber untergebracht da zum teil Tabellen in der Auswertung verwendet haben welche so viele Daten enthalten, dass andernfalls die Performance extrem unter der Auswertung durch den View leidet. Views werden bereits je Benutzer und Auswertung angelegt.

Das mit dem ALTER VIEW versuche ich mal... danke für den Tipp


Es wird manchmal direkt der befehl ReCreate und manchmal getrennt Drop und Create verwendet, kommt aber auf das gleiche raus, der Fehler erscheint egal wie rum

jobo 17. Jan 2018 11:41

AW: View in Use - Auch wenn nicht mehr darauf zugegriffen wird
 
Zitat:

Zitat von Emwykey (Beitrag 1391197)
Die Bedingungen werden im View selber untergebracht da zum teil Tabellen in der Auswertung verwendet haben welche so viele Daten enthalten, dass andernfalls die Performance extrem unter der Auswertung durch den View leidet. Views werden bereits je Benutzer und Auswertung angelegt.

Ok, dass ein View, der alle möglichen Kriterien nach außen liefert, langsamer sein kann, kann ich verstehen. Aber warum nimmt man dann nicht ein reines SQL Statement?

Jasocul 17. Jan 2018 11:54

AW: View in Use - Auch wenn nicht mehr darauf zugegriffen wird
 
Zitat:

Zitat von Emwykey (Beitrag 1391197)
Es wird manchmal direkt der befehl ReCreate und manchmal getrennt Drop und Create verwendet, kommt aber auf das gleiche raus, der Fehler erscheint egal wie rum

ReCreate macht nichts anderes als Drop und Create. Ein "alter view" macht dies nicht und erhält sogar die Rechte und Privilegien.

IBExpert 23. Jan 2018 08:53

AW: View in Use - Auch wenn nicht mehr darauf zugegriffen wird
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die Lösung zur "Object In Use" Problematik (lernt man u.a. auch in unseren Bootcamps) und wie man das in IBExpert
Database registration Info einstellt: Siehe angehängtes Image
Geht auch bei einigen anderen Tools, da muss man halt suchen wo das evtl geht.
Es mus isc_tbp_wait in den Transaktionseinstellungen für die Metadaten eingestellt werden.

Das ist wichtig um parallel zu andere Connections Metadaten ändern zu können.
Das tritt in erster Linie bei FB25 Superclassic und classic auf, aber in selteneren Fällen
auch beim FB25 Superserver. Bei FB30 tritt das in allen Varianten relativ oft auf,
wenn man o.a. setting nicht anpasst. Viele Tools können das gar nicht anpassen, daher
falls ihr das nicht findet, einfach über den wechsel nachdenken :)

Emwykey 24. Apr 2018 11:30

AW: View in Use - Auch wenn nicht mehr darauf zugegriffen wird
 
[QUOTE=Jasocul;1391189]
Zitat:

Zitat von Emwykey (Beitrag 1391184)
"Alter View" sollte demnach aber funktionieren.


Auch wenn es schon etwas her ist, aber mit CREATE OR ALTER scheint es keine Probleme mehr zu geben :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz