Fejl når SQL-server er stoppet
Jeg forsøger i Access97 at sammenkæde en MSSQL tabel i VB v.h.a. CreateTabledef og TableDefs.Append. Det går også fint så længe SQL-serveren kører. Jeg har også indbygget fejlhåndtering hvis noget skulle gå galt. Idéen er at hvis min primære SQL-server er nede, skal den sammenkædede tabel pege på min sekundære (identiske) SQL-server.Problemet opstår hvis SQL-serveren ikke kører. Da kommer der ingen kørselsfejl i Access (som jeg kan fange og reagere på), men istedet en fejl fra Microsoft SQl Server Logon, som jeg ikke kan fange i min kode.
Hvordan kan man checke om en server kører uden at få en fejl som kræver brugerhåndtering?
Her er koden:
Public Function ConnectSQLServer()
Dim strSQL As String
Dim dbs As Database, tdf As TableDef
Dim strConnect As String, strDSN As String
Dim UserID As String, Password As String
Dim Tries As Integer
On Error GoTo ErrorHandler
DoCmd.Hourglass (True)
Set dbs = CurrentDb
Tries = 1
DBEngine.LoginTimeout = 1
On Error Resume Next
' Fjern eksisterende kæde
dbs.TableDefs.Delete ("Table1")
On Error GoTo ErrorHandler
' Prøv først primær server
strDSN = "Server1"
GoTo Connect
NextServer:
On Error GoTo 0
' Prøv anden server
If Tries < 5 Then
If strDSN = "Server1" Then
strDSN = "Server2"
Tries = Tries + 1
Else
strDSN = "Server1"
Tries = Tries + 1
End If
Else
' Send alarm
GoTo ErrorHandler
End If
Connect:
strConnect = "ODBC;DSN=" & strDSN & ";UID=sa;PWD=;DATABASE=DB1"
Set tdf = dbs.CreateTableDef("Table1")
tdf.Connect = strConnect
tdf.SourceTableName = "Table1"
On Error GoTo NextServer
dbs.TableDefs.Append tdf
On Error GoTo ErrorHandler
dbs.TableDefs.Refresh
ConnectSQLServer = True
ExitHandler:
DoCmd.Hourglass (False)
Exit Function
ErrorHandler:
ConnectSQLServer = False
LogEvent ("Det lykkedes ikke at få forbindelse til nogen af serverne. Fejl: " & Err.Number & " " & Err.Description)
Resume ExitHandler
End Function