[ nessa @ 17.10.2006. 13:31 ] @
OCX kontrola se povremeno (svakih 60 sekundi) kaci ADO konekcijom na SQL server, cita podatke i zatvara konekciju.
SQL server je na drugom racunaru u mrezi i kad se desi da iz nekog razloga lokalni racunar ispadne iz mreze
izvrsavanje komande moConn.Open 'zamrzne' ceo racunar sve dok ne istekne "Connect_Timeout" period.
Ima li necina da se pre poziva Open metode nekako proveri da li je udaljeni SQL server dostupan, a da to ne izazover
zamrzavanje sistema ?
Moze li se uopste nekako izbeci zamrzavanje sistema dok se otvara konekcija ako je SQL server nedostupan ?

[Ovu poruku je menjao nessa dana 18.10.2006. u 11:33 GMT+1]
[ dekibre @ 19.10.2006. 00:05 ] @
Da imam sličan problem ja bih razmišljao ovako.

1. Ako je problem sa mrežom probao bih da u svoj kod ubacim ping IPAdresaServera na kome je instaliran SQL Server ako ping vraća pakete onda je sa mrežom sve u redu
2. Ako je sa mrežom sve u redu a treba proveriti da li je SQL Server Offline/Online onda bih razmišljao da koristim SQL-DMO ili u novije vreme se koristi WMI.

Možda postoji neko jednostavnije rešenje ali ja bih razmišljao u ovom pravcu ako bih imao sličan problem.
Nadam se da sam ti makar malo pomogao.
[ Vuko_ @ 22.10.2006. 12:10 ] @

Ako pogledas moconn.connectiontimeout property videces da je read only, medjutim u connectionstringu mozes dodati:


Dim con As New SqlConnection("connection timeout=5;user id...")

Connection timeout se odredjuje u (integer) sekundama koliko dugo ce sistem cekati pre nego sto izbaci sistemsku gresku ukoliko konekcija nije dostupna. Ako sam dobro razumeo problem, onda treba da smanjis timeout (ja sam gore stavio 5 sekundi) i da u nativnom kodu uhvatis exeption.



Dobra vest je da u visal basic-u 2005 ima novi application event: NetworkAvailabilityChanged

Npr.


Partial Friend Class MyApplication
Friend conav As Boolean



Private Sub MyApplication_NetworkAvailabilityChanged(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.Devices.NetworkAvailableEventArgs) Handles Me.NetworkAvailabilityChanged

' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.


If e.IsNetworkAvailable Then

conav = True

Else

conav = False

End If
End Sub
End Class

Sve sto sada treba uraditi je proveriti da li je conav true, ako jeste onda con.open, ako nije, onda drugi put :)

Pozdrav, nadam se da sam barem malo pomogao.
[ nessa @ 23.10.2006. 09:47 ] @
Hvala na savetima, mislim da mi je za sada metoda sa PINGom najbliskija po konceptu.
[ Vuko_ @ 23.10.2006. 14:38 ] @
Ma imao sam ti ja "problem" sa ping-om. Provajderi onemogucuju ping iz bezbedonosnih razloga i onda mozes da ga pingujes koliko hoces, jednostavno: nema pinga. Ako to kod tebe nije slucaj, onda je ok.

Pozz.