Error \'-214767259(80004005)\' en tiempo de ejecución
Hola a todos,
Estamos desarrollando un programa en Visual Basic que accede a una base de datos SQL Server 2000.
Dicho programa está interrogando constantemente a la base de datos, lanzando recordsets.
El problema es que, al cabo de 5 minutos de ejecución, sale en siguiente error:
Error '-214767259(80004005)' en tiempo de ejecución.
Estamos desesperados, no encontramos ninguna solución al problema.
¿Alguien puede ayudarme?
Estamos desarrollando un programa en Visual Basic que accede a una base de datos SQL Server 2000.
Dicho programa está interrogando constantemente a la base de datos, lanzando recordsets.
El problema es que, al cabo de 5 minutos de ejecución, sale en siguiente error:
Error '-214767259(80004005)' en tiempo de ejecución.
Estamos desesperados, no encontramos ninguna solución al problema.
¿Alguien puede ayudarme?
Tengo el mismo problema, tu ya encontraste una solucion?
Es un problema de acceso a la BD relacionado con los permisos. Os cuneto mi caso a ver si os sirve. Diseñé un progrma con VB6.0 con Access que tiraba estupendamente hasta que lo use en XP. Bueno el problema estaba en que cuando funcionaba con Administradores no daba ningun problema, pero al intentarlo como Usuario daba ese problema y no se guardaba el registro, encima al ser error de la BD y no del programa no podia capturar el error. Es un tema de permisos con XP. Solo el que crea la BD puede usarla. Solucion: Inicio-Panael de control-herramientas-opciones de carpeta. En configuracion avanzada deshabilitar Uso compartido simple de no se que (la ultima opcion). Despues vais al archivo de la BD botn derecho propiedades seguridad y dais permisos de modificacion y escxritura para todos los usuarios.
No se si os servira. Solo se puiede hacer con XP professional.
Si vuestro SO es 2000 la opcion sale sin tanta parafernalia:
archivo de la BD botn derecho propiedades seguridad y dais permisos de modificacion y escritura para todos los usuarios.
Espero que os sirva.
No se si os servira. Solo se puiede hacer con XP professional.
Si vuestro SO es 2000 la opcion sale sin tanta parafernalia:
archivo de la BD botn derecho propiedades seguridad y dais permisos de modificacion y escritura para todos los usuarios.
Espero que os sirva.
Haber... en que tipo de evento necesitas consultar la DB y cada cuanto tiempo. Te lo pregunto por que alomejor tu necesitas saber cuando se ingresaron nuevos registros a la DB o cuando se eliminaron. Si es asi lo que podrias hacer es tener una tabla de flag para saber si ha ocurrido algun cambio en tu base para no tener que recorrer gran cantidad de datos (por ejemplo) de esa manera las consultas serian mas livianitas y en el caso de que ocurrio algun evento rescatas la info.
ahora con respecto al error que te arroja. te recomiendo ocupar algunas propiedades de ADO. en el caso que lo estes ocupando para hacer tu conexion. eso seria para tener mas control sobre los errores (tener mas detalles).
Esta clase la hice para ASP pero los comandos sobre la conexion funciona exactamente en VB
Class oEjecutaSQL
Public iNumError, sMsgError, rRS, Trans, nFuenteError
Private Sub Class_Initialize()
Trans=false
End Sub
Public Function evalua(byVal sSQL, byRef rCon)
On Error Resume Next
'If Trans=true then rCon.BeginTrans end if
set rRS = rCon.Execute(sSQL)
if int(Err.number)<>0 then
iNumError = Int(rCon.Errors(0).NativeError)
sMsgError = Cstr(rCon.Errors(0).Description)
nFuenteError = Cstr(rCon.Errors(0).Source)
rCon.Errors(0).Clear
'If Trans=true then rCon.RollbackTrans end if
Else
iNumError = 0
'If Trans=true then rCon.CommitTrans end if
end if
End Function
Public function getdato(byVal dato)
Dim valor
On Error Resume Next
If vartype(rRS) = 9 then
'valor = rRS.Fields(dato).Value
'valor = rRS.Fields(dato).Name
'response.write "valor rs "&valor&"--------error rs "&Err.number&"----- descripcion: "&Err.description&"<br>"
If int(Err.number)<>0 then
valor = CStr("error")
Else
If not rRS.BOF and not rRS.EOF Then
'Response.Write "valor rs "&valor&"tipo :"& vartype(rRS.Fields(dato).Value)&"<br>"
'if vartype(rRS.Fields(dato).Value) = 1 then
' valor = "sin tipo"
'else
valor = Cstr(rRS.Fields(dato).Value)
'end if
else
valor = CStr("no hay dato")
End If
End If
getdato = valor
End If
End function
End Class
ahora con respecto al error que te arroja. te recomiendo ocupar algunas propiedades de ADO. en el caso que lo estes ocupando para hacer tu conexion. eso seria para tener mas control sobre los errores (tener mas detalles).
Esta clase la hice para ASP pero los comandos sobre la conexion funciona exactamente en VB
Class oEjecutaSQL
Public iNumError, sMsgError, rRS, Trans, nFuenteError
Private Sub Class_Initialize()
Trans=false
End Sub
Public Function evalua(byVal sSQL, byRef rCon)
On Error Resume Next
'If Trans=true then rCon.BeginTrans end if
set rRS = rCon.Execute(sSQL)
if int(Err.number)<>0 then
iNumError = Int(rCon.Errors(0).NativeError)
sMsgError = Cstr(rCon.Errors(0).Description)
nFuenteError = Cstr(rCon.Errors(0).Source)
rCon.Errors(0).Clear
'If Trans=true then rCon.RollbackTrans end if
Else
iNumError = 0
'If Trans=true then rCon.CommitTrans end if
end if
End Function
Public function getdato(byVal dato)
Dim valor
On Error Resume Next
If vartype(rRS) = 9 then
'valor = rRS.Fields(dato).Value
'valor = rRS.Fields(dato).Name
'response.write "valor rs "&valor&"--------error rs "&Err.number&"----- descripcion: "&Err.description&"<br>"
If int(Err.number)<>0 then
valor = CStr("error")
Else
If not rRS.BOF and not rRS.EOF Then
'Response.Write "valor rs "&valor&"tipo :"& vartype(rRS.Fields(dato).Value)&"<br>"
'if vartype(rRS.Fields(dato).Value) = 1 then
' valor = "sin tipo"
'else
valor = Cstr(rRS.Fields(dato).Value)
'end if
else
valor = CStr("no hay dato")
End If
End If
getdato = valor
End If
End function
End Class
