detectar si una conexion al SQL server ha caido

08/08/2003 - 08:56 por Sanchez Arnoletto Martin Rodrigo | Informe spam
Supongamos que al inicio de la aplicacion, genero la conexion al servidor y
obtengo un handle oconex

luego cada vez que voy a utilizar la conexion necesitaria testearla a ver si
AÚN está conectada, y si no lo está, recargar el handle oconex con una nueva
conexión.

Alguna idea???

Gracias desde ya
Saludos


Ing. Sanchez Arnoletto Martin Rodrigo
messenger: mrsarnoletto@hotmail.com
email: mrsarnoletto@dixisargentina.com.ar
 

Leer las respuestas

#1 Hernán Castelo
08/08/2003 - 14:54 | Informe spam
el resultado del comando SQL retorna -1
si te fijás después en AERROR
una de sus columnas
te dice el tipo de error

te paso algo de código:

aerror( matriz)

local sql_st, sql_er, msg

sql_st= matriz( 1, 4) &&
sql_er= matriz( 1, 5)

msg= ""

do case
case matriz( 1, 1)= 1427 or matriz( 1, 1)= 1429
msg= "Error de objeto OLE"+ matriz( 1, 2)
case matriz( 1, 1)= 1526
do case
case sql_st= "21000"
* 512
msg= "Consulta devuelve más de una fila"
case sql_st= "22001"
* 8152
msg= "Operación realizada, pero hubo truncamiento de algún valor"
case sql_st= "22003"
* 168,220,232,234, 236-238,244, 246,248,519-524, 535,8115,10015
msg= "Valor numérico imposible de representar"
case sql_st= "23000"
* 233,272,273,515,530, 547,1505,1508,2601, 2615,2626,2627,3604, 3605
do case
case inlist( sql_er, 2601, 2615, 2626, 2627, 3604, 3605)
msg= "Clave existente. No puede haber dos registros con la misma
clave"
this.estado= SQLST_PK
case sql_er= 547
msg= "Comprobación de integridad. "+ chr(10)+ ;
"Al insertar, algún campo tiene una referencia inválida a otra
tabla"+ chr(10)+ ;
"o, al borrar, la operación compromete datos externos"
this.estado= SQLST_FK
case inlist( sql_er, 515, 530, 233)
msg= "No es posible insertar valor NULO"
this.estado= SQLST_NULL
endcase
case sql_st= "25000"
* 266,277,611,628,3902, 3903,3906,3908,6401
msg= "Error de estado de transacción"
case sql_st= "40001"
* 1205,1211,2625, 3309,7112
msg= "Se ha descartado la operación a causa de un espera circular
(dead-lock)"
case sql_st= "42000"
* 207,208,213,229, 230,260
msg= "No tiene permiso para realizar la operación"
case sql_st= "01002"
msg= "La conexión se ha cerrado inesperadamente"
case sql_st= "01007"
msg= "No tiene permisos para realizar esta operación"
case sql_st= "01S00"
msg= "Atributo del string de conexión no soportado por el driver"
case sql_st= "08001"
msg= "El cliente no puede establecer conexión con el origen de datos"
case sql_st= "08002"
msg= "Conexión en uso"
case sql_st= "08003"
msg= "La conexión nunca fue abierta"
case sql_st= "08004"
msg= "Conexión rechazada por el sevidor"
case sql_st= "28000"
msg= "No tiene autorización para realizar esta operación"
case sql_st= "40002"
msg= "La operación no está permitida para conservar la consistencia de
sus datos"
case sql_st= "HY001"
msg= "Error del administrador de memoria de SQL Server"
case sql_st= " HY013"
msg= "Error del administrador de memoria de SQL Server"
case sql_st= "HY014"
msg= "Excede la cantidad de conexiones"
case sql_st= "HY090"
msg= "Buffer desborado"
case sql_st= "HYT01"
msg= "Ha excedido el tiempo de conexión"
case sql_st= "01S03"
msg= "Ninguna fila afectada por inserción o actualización"
case sql_st= "01S04"
msg= "Más de una fila afectadas"
case sql_st= "08007"
msg= "Fallo durante una transacción"
case sql_st= "08S01"
msg= "Error de comunicación en enlace físico"
case sql_st= "70100"
msg= "Operación abortada por el servidor"
case sql_st= "IM001"
msg= "Operación no soportada por el driver"
case sql_st= "IM002"
msg= "Driver no válido"
endcase
msg= "Error ODBC: "+ msg
otherwise
msg= "Error de código: "+ matriz( 1, 2)
endcase

Preguntas similares