AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Globale Temporäre Tabellen verschwinden ...
Thema durchsuchen
Ansicht
Themen-Optionen

Globale Temporäre Tabellen verschwinden ...

Ein Thema von DerAndereMicha · begonnen am 8. Nov 2007 · letzter Beitrag vom 8. Nov 2007
Antwort Antwort
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#1

Globale Temporäre Tabellen verschwinden ...

  Alt 8. Nov 2007, 12:01
Datenbank: MS SQL-SERVER • Version: 2005 • Zugriff über: ADO
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
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Globale Temporäre Tabellen verschwinden ...

  Alt 8. Nov 2007, 12:14
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.
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Globale Temporäre Tabellen verschwinden ...

  Alt 8. Nov 2007, 12:23
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
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Globale Temporäre Tabellen verschwinden ...

  Alt 8. Nov 2007, 12:35
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.
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Globale Temporäre Tabellen verschwinden ...

  Alt 8. Nov 2007, 12:42
Alles klar, ich werd's probieren. Oder ich verzichte doch ganz auf die temporäre Tabelle und schreibe das Programm um.


Gruß
Micha
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Globale Temporäre Tabellen verschwinden ...

  Alt 8. Nov 2007, 15:45
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.
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Globale Temporäre Tabellen verschwinden ...

  Alt 8. Nov 2007, 15:46
So hab ich's inzwischen auch gemacht

Trotzdem Danke.
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 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