[ASP] AW: [ASP] Re: [ASP] AW: [ASP] Re
: [ASP] AW: [ASP] DB Verbindung prüfen
activeserverpages@glengamoi.com
activeserverpages@glengamoi.com
Mon, 17 Oct 2005 14:06:53 +0200
Das ist relativ egal, wie du das Recordset öffnest. Darin liegt das Problem nicht.
Entweder solltest du die Redirects vor dem Öffnen der Datenbank machen (die müssen normalerweise eh vor einem Response.write stehen)
oder du erstellst und öffnest die Connection sessionweit.
Dies am praktischsten im Kopf der global.asa:
'ADO-Verbindung
<OBJECT RUNAT=Server SCOPE=Session ID=gCon PROGID="ADODB.Connection">
REM Object gCon erstellen, steht dann Sessionweit zur Verfügung!
Dann eine Include-Datei für alle relevanten Seiten in denen ggf. die Datenbank geöffnet sein muss:
'Datenbankverbindung überprüfen, ggf. öffnen
if gCon.State <> 1 then ' 1=open
on error resume next
gCon.Open <verbindungsdaten>
if err <> 0 then
Response.Write "(" & err.number & ") " & err.description
end if
on error goto 0
end if
Falls du einen Button zum Ausloggen hast:
if gCon.state = 1 then
gCon.close
end if
und auch in der global.asa:
Sub Session_OnEnd 'Wird ausgeführt, wenn die Sitzung eines Benutzers das Zeitlimit überschreitet oder Ihre Anwendung beendet
if gCon.state = 1 then
gCon.close
end if
End Sub
Viele Grüße, Arno Lohmer.
* * * Landesvermessungsamt Nordrhein-Westfalen
* * * Geschäftsbereich 1: Geodätischer Raumbezug
* * * Fachbereich 14: DV-Verfahrensentwicklung
* * *
* * * Muffendorfer Str. 19 - 21
* * * D - 53177 Bonn
* * *
* * * Telefon: + 49 - 228 - 846 - 1412
* * * Telefax: + 49 - 228 - 846 - 1002
* * * E-mail: mailto:lohmer@lverma.nrw.de
* * * Internet: http://www.lverma.nrw.de
* * * PfiFF: http://www.pfiff-nrw.de
-----Ursprüngliche Nachricht-----
Von: activeserverpages-admin@glengamoi.com [mailto:activeserverpages-admin@glengamoi.com] Im Auftrag von Marcel
Gesendet: Montag, 17. Oktober 2005 12:47
An: activeserverpages@glengamoi.com
Betreff: [ASP] Re: [ASP] AW: [ASP] Re: [ASP] AW: [ASP] DB Verbindung prüfen
Hallo,
das problem mit nicht geschlossenen Verbindungen ergibt sich dann, wenn ich
mitten im Script ein Response.Redirect ausführe, da ich am Anfang des
Scripts die Verbindung öffne und ganz am Ende erst schliesse.
Sollte man denn die .execute Methode bei SQL-Server überhaupt verwenden? Ist
set rs = Server.CreateObject("ADODB.recordset"), conn besser?
Danke!
Gruss,
Marcel Baudy
----- Original Message -----
From: <arno.lohmer@lverma.nrw.de>
To: <activeserverpages@glengamoi.com>
Sent: Monday, October 17, 2005 12:27 PM
Subject: [ASP] AW: [ASP] Re: [ASP] AW: [ASP] DB Verbindung prüfen
In diesem Fall ist ja sichergestellt, dass das Objekt erstellt ist, dann
brauchst du darauf nicht zu prüfen.
Das wäre nur erforderlich, wenn du das Connection-Objekt z.B. in einer
Sessionvariablen speicherst.
Wobei normalerweise aus Performancegründen davon abzuraten ist Objekte in
einer Session zu speichern.
wäre dann z.B:
' Datenbankverbindung aufbauen (mit Fehlerprüfung)
If IsObject("Conn") = FALSE Then ' Object erstellen
Set Conn = Server.CreateObject("ADODB.Connection")
strConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=" & Server.MapPath("db/aspproject.mdb")
Conn.Open strConnStr
End If
ansonsten dein Quelltext so: (!)
set conn=Server.CreateObject("ADODB.Connection")
conn.Open <verbindungsdaten>
set rs = conn.execute(<sql-anweisung>)
...
rs.Close
conn.Close
Set rs=Nothing
Set conn=Nothing
Close ist Methode der conn und rs-Objekte, also nix mit SET. Außerdem erst
das Recordset schließen und dann die Connection.
Für Datenbankenzugriffe in ASP gibt es aber auch eine Menge guter Tutorials
im Internet, bemühe mal Google.
z.B.
http://www.google.de/webhp?hl=de&newwindow=1&q=ASP+Datenbankzugriff=
&btnG=Suche&meta=lr%3Dlang_de
Viele Grüße, Arno Lohmer.
-----Ursprüngliche Nachricht-----
Von: activeserverpages-admin@glengamoi.com
[mailto:activeserverpages-admin@glengamoi.com] Im Auftrag von Marcel
Gesendet: Montag, 17. Oktober 2005 11:55
An: activeserverpages@glengamoi.com
Betreff: [ASP] Re: [ASP] AW: [ASP] DB Verbindung prüfen
Hallo,
ok, danke! Das hiesse dann überprüfen ob das object existiert, wenn ja
.state des objects abfragen.
Muss denn ein Recordset auch mit .close geschlossen werden?
So: (?)
set conn=Server.CreateObject("ADODB.Connection")
conn.Open <verbindungsdaten>
set rs = conn.execute(<sql-anweisung>)
...
Set conn.Close
Set rs.Close
Set conn=Nothing
Set rs=Nothing
Danke!
Gruss,
Marcel Baudy
----- Original Message -----
From: <arno.lohmer@lverma.nrw.de>
To: <activeserverpages@glengamoi.com>
Sent: Monday, October 17, 2005 11:25 AM
Subject: [ASP] AW: [ASP] DB Verbindung prüfen
Achja,
und den Status der Datenbankverbindung wird in ADO über die Eigenschaft
State abgefragt,
also: myConnection.State
1 = Open
0 = Closed
Um den Status abfragen zu können muss das Objekt aber auch existieren.
Viele Grüße, Arno Lohmer.
________________________________
Von: activeserverpages-admin@glengamoi.com
[mailto:activeserverpages-admin@glengamoi.com] Im Auftrag von Marcel
Gesendet: Montag, 17. Oktober 2005 10:45
An: activeserverpages@glengamoi.com
Betreff: [ASP] DB Verbindung prüfen
Hallo Liste,
wie kann ich in ASP prüfen ob eine Datenbankverbindung (in meinem Fall zu
SQL-Server) mit .open geöffnet wurde?
Was kann passieren wenn ich das .close vergesse bzw. nicht ausgeführt wird?
Kann folgende Fehlermeldung was damit zu tun haben, dass .close fehlt:
"Fehler: 1204, Schweregrad: 19, Status: 1
SQL Server kann derzeit keine LOCK-Ressource erhalten. Führen Sie die
Anweisung erneut aus, wenn weniger Benutzer aktiv sind, oder bitten Sie
den Systemadministrator, die Konfiguration der Sperren und des
Arbeitsspeichers
von SQL Server zu überprüfen."
Danke!
Gruss,
Marcel Baudy
_______________________________________________
ActiveServerPages Mailingliste, Postings senden an:
ActiveServerPages@glengamoi.com
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/activeserverpages
_______________________________________________
ActiveServerPages Mailingliste, Postings senden an:
ActiveServerPages@glengamoi.com
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/activeserverpages
_______________________________________________
ActiveServerPages Mailingliste, Postings senden an:
ActiveServerPages@glengamoi.com
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/activeserverpages
_______________________________________________
ActiveServerPages Mailingliste, Postings senden an:
ActiveServerPages@glengamoi.com
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/activeserverpages