Laden...

SQl Verbindung wieder herstellen

Erstellt von Grimmbizkit vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.502 Views
G
Grimmbizkit Themenstarter:in
310 Beiträge seit 2006
vor 15 Jahren
SQl Verbindung wieder herstellen

verwendetes Datenbanksystem: MsSql 2005 Express

Hallo, ich habe ein "kleines" Problem

ich habe eine Anwendung programmiert, die auf einen SQL Server (Express) zugreift.
Bei jeder Methode dich ich aufrufe (die auch mit dem Server arbeitet) Prüfe ich ob mein Sql Objekt die Verbindung zum Server geöffnet ist.

Wenn ich nun das Netzwerkkabel ziehe, dann tritt eine Exception auf. Soweit alles Ok.
Diese Exception protokolliere ich, und schließe dann mein SQl objekt (=null).

jetzt erstelle ich dieses Objekt neu, und öffne die Verbindung. Wenn ich aber jetzt eine Abfrage (mittel Datareader) mache, bekomme ich die Meldung

Fehler auf Übertragungsebene beim Senden der Anforderung an den Server. (provider: TCP-Provider, error: 0 - Eine vorhandene Verbindung wurde vom Remotehost geschlossen.)

Aber mein Objekt für die SqlVerbindung ist geöffnet.

Woran liegt das?

Gruß Simon

3.825 Beiträge seit 2006
vor 15 Jahren

Hallo Simon,

Du solltest so programmieren dass eine Connection nur ganz kurz geöffnet und gleich wieder geschlossen wird.

Es gibt schon viele Beiträge dazu hier im Forum.

Dann kannst Du dein Netzwerkkabel so oft rausziehen wie Du willst.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

G
Grimmbizkit Themenstarter:in
310 Beiträge seit 2006
vor 15 Jahren

Gibt es keine andere Lösung hierfür?

Ist das denn ein Fehler vom Server?

Wenn ich meine Verbindung schließe, und eine neue Aufbaue, dann ist die alte Connection doch weg. und wenn mein Objekt sage ConnectionState = Open dann sollte man doch damit arbeiten können.

3.825 Beiträge seit 2006
vor 15 Jahren

Gibt es keine andere Lösung hierfür?

Nein, Du musst schon richtig programmieren. Oder Dein Netzwerkkabel nicht raussziehen.

Ist das denn ein Fehler vom Server?

Nein, es ist ein Fehler in Deiner Programmierung.

So, ich habe mal für Dich die Suchfunktion des Forums benutzt :

[Artikel] Ressourcen schonen - Datenbanken richtig öffnen und schließen

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

4.506 Beiträge seit 2004
vor 15 Jahren

Hallo Grimmbizkit,

oder noch einmal BerndFFm's Worte anders ausgedrückt:
Bei Netzwerkressourcen muss immer so programmiert werden, dass plötzliche Verbindungsabbrüche (wie z.B. Entfernen des Kabels) nicht zu Abstürzen des Programms führen.

Also immer schön Try-Catches um die Netzwerkfunktionalität und nicht an einer gewissen Intelligenz sparen, um im Fehlerfall das Programm weiterhin lauffähig zu halten 😉

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

Gelöschter Account
vor 15 Jahren

Wenn ich meine Verbindung schließe, und eine neue Aufbaue, dann ist die alte Connection doch weg.

nein. sie ist nur wieder im connectionpool. wenn du wieder ein "open" machst, bekommst du die selbe wieder (wenn sie in der zwischenzeit nciht unterbrochen wurde aber in dem fall wird dann eine neue angelegt)

G
Grimmbizkit Themenstarter:in
310 Beiträge seit 2006
vor 15 Jahren

Kann man denn irgendwie diesen diese Verbindungen in dem Pool Schließen oder so?

Gelöschter Account
vor 15 Jahren

Kann man denn irgendwie diesen diese Verbindungen in dem Pool Schließen oder so?

ja, aber wozu soll das deiner meinung nach gut sein?

3.825 Beiträge seit 2006
vor 15 Jahren

Hallo Simon,

Beispiele für das Lesen, Ändern und Einfügen von Daten in der Datenbank :

http://www.seven-c.de/files/datenbankenhowto.htm

Und immer dran denken :

Jedes conn.Open() in einem try-Zweig.

Immer schön conn.Close(), oder using.

Möglichst wenig Befehle zwischen conn.Open und conn.Close.

Grüße Bernd

PS.: Ich hab mein "Datenbanken-How-To" mal aktualisiert. Wird aber später noch schöner werden 😉

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3