Solucionar problemas en mssql-python

Utiliza este artículo para encontrar orientación de solución de problemas para el mssql-python conductor. Empieza con el síntoma o mensaje de error que coincida con tu problema.

Problemas de instalación

Fallos de instalación de pip o compilación desde el código fuente

Para versiones de Python no soportadas, ruedas ausentes, entornos virtuales inactivos y librerías Linux ausentes, consulte Solucionar problemas de instalación y conexión.

Instalaciones de controladores en conflicto

Para errores de importación o comportamientos inesperados cuando mssql-python y pyodbc se instalan juntos, consulte Solucionar problemas de instalación y conexión.

Problemas de conexión

No se puede conectar al servidor

Para SQLSTATE08001, servidores inalcanzables, servicios detenidos y reglas de firewall Azure SQL, consulta Solucionar problemas de instalación y conexión.

Error de inicio de sesión

Para SQLSTATE 28000, discrepancias en el modo de autenticación, credenciales inválidas y usuarios ausentes de bases de datos, consulte Solucionar problemas de instalación y conexión.

Tiempo de espera de conexión

Para SQLSTATE HYT00 o HYT01, latencia de red, servidores lentos y ajustes de tiempo de espera, consulta Solucionar problemas de instalación y conexión.

Errores de certificado SSL

Para errores de certificado no confiables y opciones seguras de desarrollo local, consulte Solucionar problemas de instalación y conexión.

Problemas de ejecución de consultas

Tabla u objeto no encontrado

Para comprobaciones de SQLSTATE 42S02, contexto de base de datos, calificación de esquema y existencia de tablas, consulte Resolver problemas de consulta, datos y operación.

Error de sintaxis

Para SQLSTATE 42000, sintaxis SQL, escape de cadenas y consultas parametrizadas, consulta Solucionar problemas de consulta, datos y operaciones.

Errores de parámetros

Para consultar SQLSTATE 07001, el número de marcadores de posición y los estilos de parámetros compatibles, véase Solucionar problemas de consultas, datos y operaciones.

Problemas con el tipo de datos

Errores de conversión de fecha y hora

Para SQLSTATE 22007 y la conversión de parámetros de fecha y hora, consulte Solucionar problemas de consultas, datos y operaciones.

Problemas de precisión decimal

Para valores decimales truncados o redondeados, consulte Problemas de consulta, datos y operación.

Problemas de codificación Unicode

Para caracteres especiales distorsionados y tipos de columnas Unicode, véase Solucionar problemas de consulta, datos y operaciones.

Problemas de rendimiento

Ejecución lenta de consultas

Para indexación, grandes conjuntos de resultados y agrupación de conexiones, consulte Solucionar problemas de consulta, datos y operaciones.

Problemas de memoria con resultados grandes

Para transmitir y paginar grandes conjuntos de resultados, consulte Solucionar problemas de consulta, datos y operación.

Problemas de transacciones

Alcance de tablas temporales con autocommit

Para las tablas temporales que desaparecen tras una reversión y las sentencias DDL que requieren confirmación automática, consulta Solucionar problemas de consultas, datos y operaciones.

Transacción no comprometida

Para los cambios de datos que no persisten tras el cierre de la conexión, consulta Resolver problemas de consulta, datos y operación.

Errores de interbloqueo

Para SQLSTATE 40001, instrucciones para reintentar y análisis de interbloqueos recurrentes, consulta Solucionar problemas de consultas, datos y operaciones.

Problemas de carga masiva

Infracciones de restricciones durante la copia masiva

Para violaciones de clave primaria, única, comprobación o clave externa durante copias masivas, consulte Resolución de problemas de consulta, datos y operación.

Errores de mapeo de columnas

Para las discordancias entre el número de columnas y el orden de las columnas en la copia masiva, consulte Solucionar problemas relacionados con consultas, datos y operaciones.

Desajustes de tipo durante la copia en bloque

Para valores truncados, redondeados o incorrectos tras una copia masiva, consulte Problemas de consulta, datos y operación.

Errores de vinculación de tipos de NumPy

Para errores al enlazar parámetros con tipos enteros o de coma flotante de NumPy, consulte Solucionar problemas de consultas, datos y operaciones.

Bulkcopy con tablas temporales

Para obtener información sobre los errores Invalid object name al usar bulkcopy() con una tabla temporal de la sesión, consulta Solucionar problemas de consulta, datos y operaciones.

Problemas de contenedores y CI

Bibliotecas del sistema ausentes en Linux

Si faltan las bibliotecas libltdl o Kerberos en entornos Linux, consulta Solucionar problemas de instalación y conexión.

Errores SSL de macOS tras la instalación

Para errores relacionados con SSL en macOS, incluido Apple Silicon, consulta Solucionar problemas de instalación y conexión.

Herramientas de diagnóstico

Habilitar el registro del controlador

Utilice mssql_python.setup_logging() para habilitar el registro DEBUG. El controlador registra sentencias SQL, parámetros, operaciones ODBC internas y cambios en el estado de la conexión.

import mssql_python

# Enable logging to file (default)
mssql_python.setup_logging()

# Output to stdout (useful for CI/CD and containers)
mssql_python.setup_logging(output="stdout")

# Output to both file and stdout
mssql_python.setup_logging(output="both")

# Custom log file path (must use .txt, .log, or .csv extension)
mssql_python.setup_logging(log_file_path="/var/log/myapp/mssql.log")

Los archivos de registro utilizan formato CSV y rotan automáticamente a 512 MB con cinco copias de seguridad. El controlador desinfecta datos sensibles como contraseñas y tokens de acceso en la salida de registro.

Para añadir entradas de la aplicación al registro del controlador, utilice driver_logger:

import mssql_python
from mssql_python.logging import driver_logger

mssql_python.setup_logging()

driver_logger.debug("[App] Starting data processing")
driver_logger.error("[App] Failed to process record")

Caution

El registro supone una sobrecarga de rendimiento. Actívalo solo cuando soluciones un problema. No lo actives en producción por defecto.

Obtener información del conductor

Recupera la versión del controlador y los detalles del servidor de una conexión activa:

import mssql_python

conn = mssql_python.connect(connection_string)

print(f"Version: {mssql_python.__version__}")
print(f"Server name: {conn.getinfo(mssql_python.SQL_SERVER_NAME)}")
print(f"Database name: {conn.getinfo(mssql_python.SQL_DATABASE_NAME)}")

Comprobación del estado de conexión

Ejecuta una consulta ligera para comprobar si una conexión sigue abierta:

import mssql_python

try:
    cursor = conn.cursor()
    cursor.execute("SELECT 1")
    print("Connection is open")
except mssql_python.Error:
    print("Connection is closed or broken")

Referencia rápida: Errores comunes

Error SQLSTATE Causa común Troubleshooting
El cliente no puede establecer la conexión 08001 Servidor inaccesible No se puede conectar al servidor
Error de inicio de sesión 28000 Credenciales incorrectas Inicio de sesión fallido
Se ha agotado el tiempo de espera HYT00 o HYT01 Red lenta Tiempo de espera de la conexión
Nombre de objeto no válido. 42S02 Tabla o esquema incorrecto Tabla u objeto no encontrado
Error de sintaxis 42000 Error de SQL Error de sintaxis
Infracción de restricción 23000 Violación de clave foránea o clave primaria Violaciones de restricciones durante la copia a volumen
Deadlock 40001 Contención de bloqueo Errores de bloqueo