Demasiada espera para conectar a B.D. en un servidor
Publicado por apacheco (98 intervenciones) el 04/12/2017 09:45:11
Buenos dias.
El problema que tengo en una instalación específica es que cuando trabajan con el programa, realizado en Visual Basic y usando una B.D. MySql situada en un servidor externo a la empresa, si tiene abierto el programa y dejan de utilizarlo durante un cierto espacio de tiempo al volver a usarlo tarda mucho en conectarse a la B.D.
Os adjunto la función de conexión que llevo utilizando mas de 10 años sin problema:
El servidor donde esta situada la B.D., presumo que tiene un time out que es el que debe impiedir que funcione la conexión para la consulta "Show Tables" de forma inmediata, porque al cabo de un cierto tiempo (interminable para el usuario) si vuelve a funcionar.
¿Conocéis otra forma de hacerlo?.
Gracias de antemano.
P.D. Una forma (para mi algo chapucera) sería abrir la conexión al necesitarla en un módulo y cerrarla al salr de dicho modulo.
El problema que tengo en una instalación específica es que cuando trabajan con el programa, realizado en Visual Basic y usando una B.D. MySql situada en un servidor externo a la empresa, si tiene abierto el programa y dejan de utilizarlo durante un cierto espacio de tiempo al volver a usarlo tarda mucho en conectarse a la B.D.
Os adjunto la función de conexión que llevo utilizando mas de 10 años sin problema:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Public Function Conectar() As Boolean
Dim errores As Integer
Dim conectado As Boolean
Dim rsCon As MySqlDataReader
On Error Resume Next
Err.Clear()
errores = 0
conectado = False
sqlCmd = New MySqlCommand("Show Tables", sqlCon) ' sqlCon es la variable Pública de conexión
rsCon = sqlCmd.ExecuteReader()
rsCon.Close()
If Err.Number <> 0 Then
Do While (errores < 3) And (Not conectado)
Err.Clear()
If sqlCon.State = 1 Then
sqlCon.Close()
End If
sqlCon = Nothing
sqlCon = New MySqlConnection
sqlCon.ConnectionString = strConex
sqlCon.Open()
If Err.Number = 0 And _
sqlCon.State = 1 Then
conectado = True
Else
errores = errores + 1
End If
Loop
If Not conectado Then
Conectar = False
Else
Conectar = True
End If
Else
Conectar = True
End If
If Not Conectar Then
MostrarError("Módulo General", "Conectar", Err.Number, _
"ERROR AL CONECTAR CON LA BASE DE DATOS", _
MessageBoxIcon.Stop + MessageBoxButtons.OK, _
"CONEXION A BASE DE DATOS")
End If
End Function
El servidor donde esta situada la B.D., presumo que tiene un time out que es el que debe impiedir que funcione la conexión para la consulta "Show Tables" de forma inmediata, porque al cabo de un cierto tiempo (interminable para el usuario) si vuelve a funcionar.
¿Conocéis otra forma de hacerlo?.
Gracias de antemano.
P.D. Una forma (para mi algo chapucera) sería abrir la conexión al necesitarla en un módulo y cerrarla al salr de dicho modulo.
Valora esta pregunta
0