Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

SQL Temporäre Tabellen abfragen

Frage Entwicklung Datenbanken

Mitglied: Fred666

Fred666 (Level 1) - Jetzt verbinden

17.07.2011 um 19:02 Uhr, 7878 Aufrufe, 5 Kommentare

Verwendet wird SQL 2005

Hey zusammen,

ich habe eine Frage zu temporären Tabellen!!

Und zwar habe ich eine Stored Procedure welche mir eine Temp. Tabelle erstellt und diese füllt.

Wenn ich nun in einer Query (der gleichen Datenbank) die Stored Procedure ausführe und danach auf Daten der TempTabelle zugreifen möchte bekomme ich den Fehler:

<Invalid object name '#TempTestTabelle'>

Mein Aufruf sieht folgendermaßen aus:

01.
 USE NORTHWIND 
02.
EXEC dbo.USP_TempTabelle        --Hier wird #TempTestTabelle erzeugt 
03.
--nun auf diese Daten zugreifen 
04.
SELECT Spalte1, Spalte3 FROM #TempTestTabelle
Was muss ich tun, damit ich mit der Temp. Tabelle in anderen Querys arbeiten kann?!?

Danke und Grüße
Fred
Mitglied: Biber
17.07.2011 um 19:48 Uhr
Moin Fred666,

  • eine in einer Stored Procedure angelegte lokale temporäre Tabelle (Präfix "#") ist nur innerhalb der StP inclusive evtl aufgerufener Unter-stored procedures sichtbar.
  • eine irgendwo, z.B. in einer Stored Procedure angelegte globale temporäre Tabelle (Präfix "##") ist innerhalb der gesamten Session sichtbar.

-> also entweder globale TempTables anlegen
-> oder alles (auch deine Queries) in einer erweiterten StP abfackeln.

Grüße
Biber
Bitte warten ..
Mitglied: Fred666
17.07.2011 um 21:38 Uhr
Hi Biber,

okey danke für die Infos! .... das mit dem global hab ich versucht aber nicht ganz geklappt. werde wohl oder übel unterUSP aufrufen müssen!!


Greez und danke
Fred!!
Bitte warten ..
Mitglied: Biber
17.07.2011 um 22:39 Uhr
Moin Fred666,

hab ich versucht aber nicht ganz geklappt..
-> Gilt hier nicht im Forum.

Eventuell hilft es schon, wenn du die Tabellen beim SELECT (also nach dem CREATE und Befüllen durch die StP) mit voll qualifiziertem Namen ansprichst.

Also
SELECT whatever1, whatever2 FROM tempdb.dbo.##TempTestTabelle 
 
Und es muss natürlich in derselben Session sein.

Grüße
Biber
Bitte warten ..
Mitglied: Fred666
18.07.2011 um 08:34 Uhr
Hi...

okey! ... nehme ich zur Kenntniss^^ .... Also ich habe es so probiert wie du meintest:
Habe in einer Query eine ##TempTabelle angelegt und in einer anderen darauf zugegriffen. Hat geklappt.
ABER: wenn ich in einer Query eine ##TempTabelle anlege, diese Querry schließe und in einer neuen Query darauf zugreifen möchte geht das nicht mehr!!

Das war mit dem"versucht aber nicht geklappt" gemeint!!

EDIT: Also wenn ich das über eine USP mache, dann ist die ##TempTable bearbeitbar aber nur solange wie das Fenster welches die USP aufrief offen ist!! Wenn ich dieses Fenster schließe, welches die USP aufruft dann ist auch die Tabelle weg!

weitere Frage: wie sicher bzw. erstrebenswert ist es globale Temp Tabellen zu verwenden?? Gibt es da irgendwelche risiken oder ähnliches das man beachten sollte?!?

Grüße Fred
Bitte warten ..
Mitglied: MadMax
18.07.2011 um 13:01 Uhr
Moin,

temporäre Tabellen werden gelöscht, sobald die SP, durch die sie angelegt wurde, beendet wird. Ob lokal oder global ist egal, wenn USP_TempTabelle beendet wird, ist die Tabelle weg. Was funktioniert ist, wenn die temporäre Tabelle erst erstellt wird, dann in der Unterprozedur USP_TempTabelle die Tabelle befüllt wird und dann der Inhalt weiterverarbeitet wird. Nicht die schönste Art, aber anders gehts nicht (wenn doch, dann wäre ich auch für eine sinnvolle Alternative dankbar ).

Der Nachteil von globalen Tabellen ist einfach der: Wenn mehrere Benutzer ein Programm bedienen und erst Benutzer A die globale Tabelle anlegt und anschließend Benutzer B dieselbe Prozedur aufruft und auch die Tabelle anlegen will, dann bekommt der einen Fehler. Die temporäre Tabelle von Benutzer A sollte er auch nicht verwenden, weil er ja nicht weiß, wann der die Tabelle wieder löscht.

Bis jetzt habe ich noch keine sinnvolle Verwendung in einem Programm für die globale Tabelle gefunden. Einzig, wenn ich im Query Analyzer was teste und von einer anderen Session aus mal einen Wert abfragen will, dann brauche ich die globalen Tabellen, aber das kommt so gut wie nie vor

Gruß, Mad Max
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Datenbanken
gelöst Schleifen in SQL-Abfrage bei 2 Tabellen (2)

Frage von Aximand zum Thema Datenbanken ...

Datenbanken
2 SQL Abfragen verbinden

Frage von cuxmini zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...