vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
tempDB mit ADO 
Autor: GuckInDieLuft
Datum: 02.01.12 12:40

Seit längerem habe ich mit VB6 den Zugriff auf den SQLServer über ODBC realisiert und arbeite öfters mit temporären Tabellen, die in der tempDB abgespeichert werden (##TMP...).

Jetzt wollte ich auf ADO umstellen. Der Zugriff auf die "normalen" Tabellen funktioniert problemlos, allerdings gibt es Probleme mit der tempDB ("Kann TAbelle ##tmp... nicht finden"). Wenn ich die Tabelle in der "normalen" Datenbank abspeichere funktioniert es wieder.

Kann mir jemand helfen?
Ist es sinnvoll von ODBC auf ADO umzustellen? (Geschwindigkeit?)

Vielen Dank im Voraus.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: tempDB mit ADO 
Autor: wb-soft
Datum: 16.01.12 21:18

Hi!

Ich verstehe die Problemstellung nicht.
Erklär das mal genauer. Eventuell mit einem Code-Schnipsel.

Wenn du mit der bisherigen Version keine Probleme hast, laß alles wie es ist.
ADO wäre schon besser, aber der Aufwand für die Umstellung lohnt sich kaum.


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: tempDB mit ADO 
Autor: GuckInDieLuft
Datum: 17.01.12 09:55

Hallo WB,

vielen Dank für Deine Bemühungen.

Bisher habe die Verbindung zur Datenbank über einen ODBC-Treiber realisiert. Im Programm steht dann folgender Code:

' Verbindung zur Datenbank
Set goConn = New ADODB.Connection
goConn.ConnectionString = "DSN=" & gsODBC & ";UID=" & gsUID & ";PWD=" & gsPWD & "; "
goConn.Open

...

' Aufbau einer temporären Tabelle:
' AktuelleDatumString ist aktuelles Datum und Uhrzeit
' Die temporäre Tabelle wird in der tempDB gespeichert#
' Der Programmname ist variabel, damit es zu keinen doppelten Tabellennamen kommt.
gsTempTabelle = "##TMP_" & gsTransaktion & Trim(gsAnwender) & DatumsFunktionen.AktuellDatumString

SQL = "CREATE TABLE " & gsTempTabelle & _
" ( Mandant_Nr INT NULL, " & _
" Kunden_IDSNr INT NULL, " & _
" Artikel_IDSNr INT NULL) "
goConn.Execute SQL

...

SQL= "SELECT * FROM " & gsTempTabelle
goRS.Open SQL, goConn, adOpenDynamic, adLockOptimistic


==> Dieser Ablauf funktioniert.
---------------------------------

Angebblich ist die Anbindung über ADO schneller, deshalb wollte ich den Datenbanbkzugriff ändern:


Set goConn = New ADODB.Connection
goConn.ConnectionString = "provider=SQLOLEDB.1;" & _
"data source='" & gsServer & "';" & _
"Initial Catalog='" & gsDatenbank & "';" & _
"user id='" & gsUID & "';" & _
"password='" & gsPWD & "'"
goConn.Open

...

gsTempTabelle = "##TMP_" & gsTransaktion & Trim(gsAnwender) & DatumsFunktionen.AktuellDatumString


Der Zugriff auf die Datenbank funktioniert hier ebenfalls, allerdings beim Lesen der temporären Tabelle erscheint ein Fehler ("kann Tabelle nicht finden").

Wenn ich die beiden ## aus dem Tabellennamen herausnehme, die Tabelle somit in der "normalen" Datenbank speichere, funktioniert das Programm wieder.


Mittlerweile habe Geschwindigkeitstests gemacht, das Programm wurde aber erheblich langsamer.


Mache ich bei der Anbindung etwas verkehrt?


Mfg
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: tempDB mit ADO 
Autor: wb-soft
Datum: 17.01.12 10:44

Hi!

Ok, jetzt habe ich das Problem verstanden. Allerdings habe ich keine Erfahrung in dieser Richtung.

Hast du überprüft, ob die Tabelle tatsächlich erstellt wird, und ob sie zum Zeitpunkt der Abfrage noch existiert?
Könnte es sein, daß die Tabelle gelöscht wird, weil die Verbindung ab- und wieder aufgebaut wird?

Wie schon gesagt ist durch den Umstieg auf ADO keine wesentliche Verbesserung zu erwarten.


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: tempDB mit ADO 
Autor: wb-soft
Datum: 17.01.12 13:38

Hi!

Ich hab jetzt mal bei mir getestet.

Wenn die Verbindung zwischen der Tabellenerstellung und der Abfrage nicht getrennt wird, funktioniert es.


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: tempDB mit ADO 
Autor: GuckInDieLuft
Datum: 17.01.12 15:49

Hallo WB,

geht die Verbindung zur Datenbank nicht erst verloren, wenn das Objekt ("goConn") geschlossen wird? Und das geschieht, wenn das Programm verlassen wird.

Anders gefagt: Was muss ich machen, damit die Verbindung nicht verloren geht?


Mfg
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: tempDB mit ADO 
Autor: wb-soft
Datum: 17.01.12 16:59

Hi!

Du hast Recht.

Allerdings gibt es auch Gründe, die Connection für jeden Zugriff zu öffnen, und wieder zu schließen.
Wenn die Verbindung zur DB über Internet hergestellt wird, mache ich es so.

Bei dir ist das nicht der Fall. Wenn die Verbindung durch einen Fehler verloren geht, entsteht beim nächsten Zugriff ein Fehler. Wenn der Zugriff auf "normale" Tabellen funktioniert, besteht die Verbindung noch.

Dein Problem muß wo anders liegen. Mein Test hat nur ergeben, daß es mit ADO genauso funktioniert wie mit ODBC.

Leider habe ich keine Idee, mit der ich dir weiter helfen könnte.


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: tempDB mit ADO 
Autor: GuckInDieLuft
Datum: 17.01.12 17:18

Hallo WB,


vielen Dank für Deine Bemühungen.

Wegen der Geschwindigkeit werde ich noch ein paar Tests durchführen und wahrscheinlich bei der jetzigen Einstellung (ODBC) bleiben.


Mfg
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel