Hej.
Jag försöker komma på hur man använder sig av timeout, eller om det finns en bättre möjlighet, för att upptäcka att SQL-servern inte är igång/inte svarar. Nedan följer den kod som används i Visual Basic för att öppna databasen:
Sub Databas()
On Error Resume Next
Set Conn = New ADODB.Connection
Conn.CommandTimeout = 2
Conn.ConnectionTimeout = 2
If Conn.State = Closed Then
If dbTyp = "Access" Then
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath
End If
If dbTyp = "SQL" Then
Conn.ConnectionString = "Driver={SQL Server};Server=" & dbIP & ";Database=" & dbName & ";Uid=" & dbUser & ";Pwd=" & dbPass
Conn.Open
End If
End If
If Conn.State = Closed Then
MsgBox "Det gick inte att öppna databasen!", vbCritical, "Fel"
End If
End Sub
Ovan öppnar antingen en Access-databas eller en databas på en SQL 2005-server. När det gäller Access-databasen är det inga problem, finns inte filen så blir det fel direkt. Men om jag stänger SQL-servern för att simulera att den inte svarar, så tar det 42 sekunder innan felmeddelande kommer. Jag har testat att ändra värdena för CommandTimeout och ConnectionTimeout, men det blir ingen som helst skillnad.
Är det här ett bra sätt att göra det på eller finns det något bättre sätt att kontrollera innan man försöker läsa/skriva och saker kraschar?
Tacksam för tips och hjälp.