Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Globale Temporäre Tabellen verschwinden ... (https://www.delphipraxis.net/103014-globale-temporaere-tabellen-verschwinden.html)

DerAndereMicha 8. Nov 2007 12:01

Datenbank: MS SQL-SERVER • Version: 2005 • Zugriff über: ADO

Globale Temporäre Tabellen verschwinden ...
 
Hallo Zusammen,

folgender Effekt tritt bei mir auf. Meine Anwendung erzeugt beim Start ne globale temporäre Tabelle (##Tabelle) auf nem MS SQL-Server. Dieses Anwendung läuft dann ununterbrochen als Dienst auf dem PC weiter. Nach ner gewissen Zeit ist die temporäre Tabelle dann auf dem SQL-Server verschwunden, obwohl ich die Verbindung zwischen Anwendung und SQL-Server nicht trenne. Hat jemand ne Ahnung an was das liegen könnte? Gibt es evtl. eine beschränkte "Lebensdauer" für temporäre Tabellen, wenn diese nicht verwendet werden?

Gruß
Micha

Jelly 8. Nov 2007 12:14

Re: Globale Temporäre Tabellen verschwinden ...
 
Zitat:

Zitat von MSSQL T-SQL Help System
Global temporary tables are automatically dropped when the session that created the table ends and all other tasks have stopped referencing them. The association between a task and a table is maintained only for the life of a single Transact-SQL statement. This means that a global temporary table is dropped at the completion of the last Transact-SQL statement that was actively referencing the table when the creating session ended.

Die globalen Temptabellen können also unter gewissen Umständen verfallen.

Aber zur peristenten Speicherung sind die ja auch nicht gedacht. :angel2:

DerAndereMicha 8. Nov 2007 12:23

Re: Globale Temporäre Tabellen verschwinden ...
 
Hallo,

das mein ich ja. Meine Verbindung ist durchaus noch aktiv. Ich greife nur gerade nicht auf die Tabelle zu. Dann dürfte die Tabelle laut Deiner Definition nicht gelöscht werden. Ich benutze die temporäre Tabelle übrigens, damit eine andere meiner Anwendungen erkennt, ob der Dienst (der die Tabelle ja erzeugt) gerade läuft.

Gruß
Micha

Jelly 8. Nov 2007 12:35

Re: Globale Temporäre Tabellen verschwinden ...
 
Ein Verbindung zur DB, die gerade nix tut, kann durchaus von der DB getrennt werden. Stichwort: ConnectionPooling.
Mache einfach mal in regelmässigen Abständen irgendeinen banalen Request an die DB, und schaue, ob dass die glob. temp. Tabelle immer noch verschwindet.

DerAndereMicha 8. Nov 2007 12:42

Re: Globale Temporäre Tabellen verschwinden ...
 
Alles klar, ich werd's probieren. Oder ich verzichte doch ganz auf die temporäre Tabelle und schreibe das Programm um.


Gruß
Micha

Jelly 8. Nov 2007 15:45

Re: Globale Temporäre Tabellen verschwinden ...
 
Da fällt mir folgendes ein... Erstelle dir mal in der DB folgende View:

SQL-Code:
create view vwRunningProcesses
as
select d.name as DBName, p.Hostname as Host, p.Program_name as Program, p.login_time as LoginTime, p.last_batch as LastBatch, p.Loginame, p.nt_domain, p.nt_username
from master.dbo.sysprocesses p inner join master.dbo.sysdatabases d on p.dbid=d.dbid
where d.name = db_name()
Sie gibt dir alle aktiven Verbindungen zur Datenbank an. Wenn du jetzt noch dein ConnectionString durch
Code:
...;APP=YourApplication
ergänzt, so siehst du in der View sofort, ob eine Anwendung läuft oder nicht...

Ist, denk ich, eleganter als die Notlösung über eine temporäre Tabelle.

DerAndereMicha 8. Nov 2007 15:46

Re: Globale Temporäre Tabellen verschwinden ...
 
So hab ich's inzwischen auch gemacht :-)

Trotzdem Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 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