Seite 1 von 1

Temporäre Tabellen löschen [ERLEDIGT]

Verfasst: So, 12. Mai 2013 23:45
von UliTs
Ich möchte eine temporäre Tabelle löschen. Eigentlich ganz einfach:

Code: Alles auswählen

DROP TABLE #TmpFilename
Blöderweise habe ich zuvor auf diese Tabelle sowohl mit SQL-Befehlen:

Code: Alles auswählen

UPDATE #TmpFilename SET ... WHERE ...
als auch mit

Code: Alles auswählen

AdsOpenTable
AdsCloseTable
zugegriffen. Leider lässt sich in diesem Fall die Tabelle nicht löschen...
Vermutlich wird die Tabelle intern aufgrund der Sql-Befehle wegen Optimierung noch offen gehalten. Ich meine, dass war einstellbar. Aber wie?
-
Nichts desto trotz sollte es meines Erachtens in so einem Fall möglich sein, die Tabelle ohne weitere Kraftakte löschen zu können :? .

Uli

Re: Temporäre Tabellen löschen

Verfasst: Mo, 13. Mai 2013 12:57
von nightcrawler
AdsCloseCachedTables vorher aufrufen, damit der interne File-Cache geleert wird.

Re: Temporäre Tabellen löschen

Verfasst: Mo, 13. Mai 2013 14:48
von UliTs
nightcrawler hat geschrieben:AdsCloseCachedTables vorher aufrufen, damit der interne File-Cache geleert wird.
Vielen Dank für die Hilfe!
Ich habe AdsCloseCachedTables umgesetzt und aufgerufen. Klappt auch ohne Fehlermeldung.
Aber das Löschen der temporären Tabelle klappt leider weiterhin nicht :-( .
Wenn ich den folgenden SQL-Befehl nicht ausführe, funktioniert es jedoch:

Code: Alles auswählen

INSERT INTO #TmpFilename
SELECT FAu.*
FROM Filename FAu
WHERE FAu.FAuId=291959
Ich bin ratlos...

Uli

Re: Temporäre Tabellen löschen

Verfasst: Mo, 13. Mai 2013 15:24
von nightcrawler
Das SQL Statement kann man über AdsCloseSQLStatement schließen und somit die Tabellen-Handles befreien. HTH
PS: Bin leider zuwenig in Xbase++ und API unterwegs...in Delphi ist das alles gekapselt;)

Re: Temporäre Tabellen löschen

Verfasst: Mo, 13. Mai 2013 15:45
von UliTs
Das SQL-Statement wird über AdsCloseSQLStatement geschlossen.
Das kann leider nicht die Ursache sein :( .
Uli

Re: Temporäre Tabellen löschen

Verfasst: Mo, 13. Mai 2013 15:54
von UliTs
Mir ist gerade noch aufgefallen, dass das Advantage Configuration Utility für Work Areas folgendes angezeigt hat:
  • max used 168
    configured 125
Kann es vielleicht damit zusammenhängen?

Uli

Re: Temporäre Tabellen löschen

Verfasst: Mo, 13. Mai 2013 16:01
von nightcrawler
UliTs hat geschrieben:Mir ist gerade noch aufgefallen, dass das Advantage Configuration Utility für Work Areas folgendes angezeigt hat:
  • max used 168
    configured 125
Kann es vielleicht damit zusammenhängen?

Uli
nein, ich denke nicht. Die Konfiguration gibt die initialen Größen der internen Speicherbereiche an. Die Bereiche werden aber dynamisch angepaßt, falls mehr Work Areas, Connections, Tables, ... benötigt werden.

Re: Temporäre Tabellen löschen

Verfasst: Mo, 13. Mai 2013 16:20
von UliTs
Ich habe noch eine Idee: kann es vielleicht mit fehlerhaft eingesetzten Transaktionen zusammenhängen?

Uli

Re: Temporäre Tabellen löschen [ERLEDIGT]

Verfasst: Mo, 13. Mai 2013 17:28
von UliTs
Also, es ist tatsächlich so, dass das Löschen der temporären Tabelle innerhalb einer Transaktion fehl schlägt!
Ich habe die Tabelle einfach auf "IGNORE TRANSACTIONS" gesetzt und schon war das Problem gelöst :-) .

Uli

P.S. Vielen Dank für die Hilfe

Re: Temporäre Tabellen löschen

Verfasst: Mo, 11. Jan 2021 17:16
von Manfred
nightcrawler hat geschrieben: Mo, 13. Mai 2013 12:57 AdsCloseCachedTables vorher aufrufen, damit der interne File-Cache geleert wird.
aber wie rufe ich das unter xBase++ auf? Oder im Architekten?

Re: Temporäre Tabellen löschen [ERLEDIGT]

Verfasst: Mo, 11. Jan 2021 20:39
von Marcus Herz
Das ist eine API Funktion von ADS. In AdsClass++ ist das enthalten, du musst das mit DllCall aufrufen. Da gibts doch sicher Beispiele bei Roger
- im Arc gar nicht möglich