Función SQLDisconnect
de conformidad de
Versión introducida: Cumplimiento de estándares ODBC 1.0: ISO 92
resumen
SQLDisconnect cierra la conexión asociada a un identificador de conexión específico.
Sintaxis
SQLRETURN SQLDisconnect(
SQLHDBC ConnectionHandle);
Argumentos
connectionHandle
[Entrada] Identificador de conexión.
Devuelve
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE o SQL_STILL_EXECUTING.
Diagnósticos
Cuando sqlDisconnect devuelve SQL_ERROR o SQL_SUCCESS_WITH_INFO, se puede obtener un valor SQLSTATE asociado mediante una llamada a SQLGetDiagRec con HandleType de SQL_HANDLE_DBC y un Handle de ConnectionHandle. En la tabla siguiente se enumeran los valores SQLSTATE devueltos normalmente por SQLDisconnect y se explica cada uno en el contexto de esta función; la notación "(DM)" precede a las descripciones de SQLSTATEs devueltas por el Administrador de controladores. El código de retorno asociado a cada valor SQLSTATE es SQL_ERROR, a menos que se indique lo contrario.
SQLSTATE | Error | Descripción |
---|---|---|
01000 | Advertencia general | Mensaje informativo específico del controlador. (Function devuelve SQL_SUCCESS_WITH_INFO). |
01002 | Error de desconexión | Error durante la desconexión. Sin embargo, la desconexión se realizó correctamente. (Function devuelve SQL_SUCCESS_WITH_INFO). |
08003 | Conexión no abierta | (DM) La conexión especificada en el argumento ConnectionHandle no estaba abierta. |
25000 | Estado de transacción no válido | Hubo una transacción en proceso en la conexión especificada por el argumento ConnectionHandle. La transacción permanece activa. |
HY000 | Error general | Se produjo un error para el que no había ningún SQLSTATE específico y para el que no se definió SQLSTATE específico de la implementación. El mensaje de error devuelto por SQLGetDiagRec en el búfer de *MessageText describe el error y su causa. |
HY001 | Error de asignación de memoria | El controlador no pudo asignar memoria necesaria para admitir la ejecución o finalización de la función. |
HY008 | Operación cancelada | El procesamiento asincrónico se ha habilitado para elconnectionHandle de Se llamó a la función y antes de que termine de ejecutarse se llamó a sqlCancelHandle en el ConnectionHandle de un subproceso diferente en una aplicación multiproceso. |
HY010 | Error de secuencia de funciones | (DM) Se llamó a una función de ejecución asincrónica para un StatementHandle asociado a la ConnectionHandle y todavía se estaba ejecutando cuando se llamó a SQLDisconnect. (DM) Se llamó a una función de ejecución asincrónica (no a esta) para el ConnectionHandle y todavía se estaba ejecutando cuando se llamó a esta función. (DM) |
HY013 | Error de administración de memoria | No se pudo procesar la llamada de función porque no se pudo tener acceso a los objetos de memoria subyacentes, posiblemente debido a condiciones de memoria baja. |
HY117 | La conexión se suspende debido al estado de transacción desconocido. Solo se permiten las funciones de desconexión y solo lectura. | (DM) Para obtener más información sobre el estado suspendido, vea función SQLEndTran. |
HYT01 | Tiempo de espera de conexión expirado | El período de tiempo de espera de conexión expiró antes de que el origen de datos respondiera a la solicitud y la conexión todavía está activa. El período de tiempo de espera de conexión se establece a través de SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 | El controlador no admite esta función | (DM) El controlador asociado a la connectionHandle de |
IM017 | El sondeo está deshabilitado en modo de notificación asincrónica | Cada vez que se usa el modelo de notificación, el sondeo está deshabilitado. |
IM018 | no se ha llamado a SQLCompleteAsync para completar la operación asincrónica anterior en este identificador. | Si la llamada de función anterior en el identificador devuelve SQL_STILL_EXECUTING y si el modo de notificación está habilitado, se debe llamar a sqlCompleteAsync en el identificador para realizar el procesamiento posterior y completar la operación. |
Comentarios
Si una aplicación llama a sqlDisconnect después de sqlBrowseConnect devuelve SQL_NEED_DATA y antes de que devuelva un código de retorno diferente, el controlador cancela el proceso de exploración de la conexión y devuelve la conexión a un estado no conectado.
Si una aplicación llama a SQLDisconnect mientras hay una transacción incompleta asociada al identificador de conexión, el controlador devuelve SQLSTATE 25000 (estado de transacción no válido), lo que indica que la transacción no cambia y la conexión está abierta. Una transacción incompleta es una que no se ha confirmado ni revertido con SQLEndTran.
Si una aplicación llama a SQLDisconnect antes de liberar todas las instrucciones asociadas a la conexión, el controlador, después de que se desconecte correctamente del origen de datos, libera esas instrucciones y todos los descriptores que se han asignado explícitamente en la conexión. Sin embargo, si una o varias de las instrucciones asociadas a la conexión siguen ejecutándose de forma asincrónica, sqlDisconnect devuelve SQL_ERROR con un valor SQLSTATE de HY010 (error de secuencia de función). Además, SQLDisconnect liberará todas las instrucciones asociadas y todos los descriptores que se hayan asignado explícitamente en la conexión, si la conexión está en un estado suspendido o si SQLDisconnect canceló correctamente SQLCancelHandle.
Para obtener información sobre cómo una aplicación usa sqlDisconnect, vea Desconectar de un origen de datos o un controlador.
Desconexión de una conexión agrupada
Si la agrupación de conexiones está habilitada para un entorno compartido y una aplicación llama a SQLDisconnect en una conexión de ese entorno, la conexión se devuelve al grupo de conexiones y sigue estando disponible para otros componentes mediante el mismo entorno compartido.
Ejemplo de código
Consulte ejemplo del programa ODBC, función SQLBrowseConnecty función SQLConnect.
Funciones relacionadas
Para obtener información sobre | Ver |
---|---|
Asignación de un identificador | función SQLAllocHandle |
Conexión a un origen de datos | función SQLConnect de |
Conexión a un origen de datos mediante una cadena de conexión o un cuadro de diálogo | función SQLDriverConnect |
Ejecución de una operación de confirmación o reversión | función SQLEndTran |
Liberar un identificador de conexión | función SQLFreeConnect |