Hallo,
beim Verwenden der TADOConnection (unter MS SQL 7, Patch 6, KeepConnection = True) tritt folgendes Problem auf: Bei einem Disconnect vom Client wird die Verbindung serverseitig auf Sleeping gesetzt und erst nach ca. 2min tatsächlich disconnected. Wird innerhalb dieser Zeit eine neue Connection (gleiches Login) aufgebaut, verwendet der Server auch eine neue Connection. Wir diese disconnectet, wird sie vom Server ebenfalls zunächst in den Sleepingmodus versetzt.
Jetzt kommt's: Wird innerhalb der ca. 2min nochmal eine Connection aufgebaut, verwendet der Server eine der schlafenden Verbindungen (sie wird quasi recyvcled). Dies wäre nicht weiter schlimm. Aber in der betreffenden Anwendung wird im AfterConnect-Event der ADOConnection die eine Anwendungsrolle aktiviert (mit sp_setapprole). Dies ist jedoch nur erlaubt, wenn diese nicht bereit aktiviert wurde (was bei der sleeping Connection der Fall war). Also gibt es nach dem dritten Connect eine Exception vom Server (die man freilich im Client abwürgen könnte).
Wie kann man also erreichen, dass bei einem Disconnect die Verbindung tatsächlich abgebrochen wird, anstatt in den Sleepingmodus versetzt zu werden? Alternativ: wie kann ich beim Aktivieren der Approle mit sp_setapprole ermitteln, ob diese schon gesetzt wurde?
Es hat leider nicht geholfen, KeepConnection auf False zu setzen, da wir die Verbindung auch ohne geöffnete Abfragen herstellen wollen, diese (Verbindung) aber sofort nach dem Connect (keine offnen Abfragen) wieder geschlossen wird.
Falls jemand eine Lösung für diess Probelem weiss, wäre es nett, diese mitzuteilen, da dieses Problem mittlerweile zeitkritisch wird (die Anwendung soll nächste Woche beim Kunden installiert werden ;-).
Mit freundlichen Grüßen
Markus Peters
beim Verwenden der TADOConnection (unter MS SQL 7, Patch 6, KeepConnection = True) tritt folgendes Problem auf: Bei einem Disconnect vom Client wird die Verbindung serverseitig auf Sleeping gesetzt und erst nach ca. 2min tatsächlich disconnected. Wird innerhalb dieser Zeit eine neue Connection (gleiches Login) aufgebaut, verwendet der Server auch eine neue Connection. Wir diese disconnectet, wird sie vom Server ebenfalls zunächst in den Sleepingmodus versetzt.
Jetzt kommt's: Wird innerhalb der ca. 2min nochmal eine Connection aufgebaut, verwendet der Server eine der schlafenden Verbindungen (sie wird quasi recyvcled). Dies wäre nicht weiter schlimm. Aber in der betreffenden Anwendung wird im AfterConnect-Event der ADOConnection die eine Anwendungsrolle aktiviert (mit sp_setapprole). Dies ist jedoch nur erlaubt, wenn diese nicht bereit aktiviert wurde (was bei der sleeping Connection der Fall war). Also gibt es nach dem dritten Connect eine Exception vom Server (die man freilich im Client abwürgen könnte).
Wie kann man also erreichen, dass bei einem Disconnect die Verbindung tatsächlich abgebrochen wird, anstatt in den Sleepingmodus versetzt zu werden? Alternativ: wie kann ich beim Aktivieren der Approle mit sp_setapprole ermitteln, ob diese schon gesetzt wurde?
Es hat leider nicht geholfen, KeepConnection auf False zu setzen, da wir die Verbindung auch ohne geöffnete Abfragen herstellen wollen, diese (Verbindung) aber sofort nach dem Connect (keine offnen Abfragen) wieder geschlossen wird.
Falls jemand eine Lösung für diess Probelem weiss, wäre es nett, diese mitzuteilen, da dieses Problem mittlerweile zeitkritisch wird (die Anwendung soll nächste Woche beim Kunden installiert werden ;-).
Mit freundlichen Grüßen
Markus Peters
Comment