Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Utiliza este artículo para diagnosticar problemas de instalación, conexión, contenedor e integración continua (CI) con el mssql-python controlador.
Problemas de instalación
Fallos de instalación de PIP o compilación desde el código fuente
Síntomas:
error: Microsoft Visual C++ 14.0 or greater is required
ERROR: Failed building wheel for mssql-python
Posibles causas y soluciones:
No hay volante preensamblado para tu plataforma
- Comprueba que tienes una versión de Python compatible (versiones 3.10 y posteriores) y una plataforma. Consulta el ciclo de vida del soporte para la matriz de compatibilidad.
- Actualiza pip antes de instalarlo con
pip install --upgrade pip. - Para entornos de equipo reproducibles, utiliza el flujo de trabajo fijado en Repeatable deployments o los patrones de contenedores de Container and local development para reducir la desviación en las máquinas locales.
Entorno virtual no activado
- Activa primero tu entorno virtual. La instalación de Python en el sistema puede causar errores o conflictos de permisos.
python -m venv .venv .venv\Scripts\activate pip install mssql-python
-
Bibliotecas del sistema Linux que faltan
- El controlador requiere varias librerías de sistema en Linux. Consulta Dependencias específicas de plataforma para los paquetes a instalar.
Instalaciones de controladores en conflicto
Síntomas:
Te encuentras con errores de importación o comportamientos inesperados después de instalar mssql-python y pyodbc en el mismo entorno.
Solution:
mssql-python y pyodbc pueden coexistir. Si te encuentras con conflictos, crea un entorno virtual limpio.
python -m venv .venv --clear
.venv\Scripts\activate
pip install mssql-python
Problemas de conexión
No se puede conectar al servidor
Síntomas:
OperationalError: [08001] (0) Client unable to establish connection
Posibles causas y soluciones:
Servidor no accesible
- Verifica que el nombre del servidor y el puerto sean correctos.
- Comprueba la conectividad de red con
ping <server>otelnet <server> 1433. - Asegúrate de que el cortafuegos permite conexiones salientes en el puerto 1433.
SQL Server no está en ejecución
- Verifica que el servicio SQL Server esté activado.
- Para instancias nombradas, verifica que el servicio SQL Server Browser esté en funcionamiento.
Reglas de firewall Azure SQL
- Añade la dirección IP de tu cliente a las reglas del firewall de Azure SQL en el portal de Azure.
- Para Azure SQL Managed Instance, asegúrate de conectarte desde una red permitida.
Prueba la conectividad TCP básica:
import socket
try:
sock = socket.create_connection(("<server>.database.windows.net", 1433), timeout=5)
print("TCP connection successful")
sock.close()
except Exception as e:
print(f"Cannot reach server: {e}")
Error de inicio de sesión
Síntomas:
OperationalError: [28000] (18456) Login failed for user '<user_id>'.
Posibles causas y soluciones:
Incompatibilidad en el modo de autenticación
- Para Azure SQL Database, Azure SQL Managed Instance y SQL Database en Fabric, se prefiere un modo de autenticación de Microsoft Entra como
Authentication=ActiveDirectoryDefault. - Si usas autenticación SQL intencionadamente, verifica que el servidor lo permita y que uses el formato de inicio de sesión correcto para ese endpoint.
- Para Azure SQL Database, Azure SQL Managed Instance y SQL Database en Fabric, se prefiere un modo de autenticación de Microsoft Entra como
Credenciales de autenticación SQL incorrectas
- Verifica el ID de usuario y la contraseña.
- Para Azure SQL, incluye el ID de usuario completo:
<user_id>@<server>.
El usuario no existe en la base de datos
- Verifica que el usuario tenga acceso a la base de datos especificada.
- Comprueba si el inicio de sesión está asignado a un usuario de la base de datos.
Autenticación no configurada
- Utiliza la autenticación de Microsoft Entra (recomendada):
Authentication=ActiveDirectoryDefault. - Si solucionas un problema en una instancia local de SQL Server que debería aceptar autenticación SQL, verifica que SQL Server use autenticación en modo mixto.
- Utiliza la autenticación de Microsoft Entra (recomendada):
Tiempo de espera de conexión
Síntomas:
OperationalError: [HYT00] (0) Timeout expired
OperationalError: [HYT01] (0) Connection timeout expired
Posibles causas y soluciones:
El servidor tarda en responder
- Aumenta el tiempo de espera de conexión.
conn = mssql_python.connect(connection_string, timeout=60)Latencia de red
- Comprueba la ruta de red hacia el servidor.
- Considera una ruta de red más corta o una red privada virtual (VPN).
Servidor bajo alta carga
- Intenta conectarte en horas de menor tráfico.
- Contacta con el administrador de tu base de datos.
Errores de certificado SSL
Síntomas:
OperationalError: [08001] SSL Provider: The certificate chain was issued by an authority that is not trusted
Soluciones:
Prefiera un certificado de confianza o los patrones de desarrollo local en Contenedor y desarrollo local. Úsalo TrustServerCertificate=yes solo para desarrollo local contra un servidor que controlas.
Para desarrollo y pruebas con un certificado autofirmado:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"TrustServerCertificate=yes;" # Don't use in production
)
Caution
TrustServerCertificate=yes es un recurso de respaldo solo local. No lo introduzcas en contenedores de desarrollo compartidos, canalizaciones de CI ni despliegues en producción. Para más información, véase Cifrado y certificados.
Para producción, instala los certificados correspondientes y utiliza:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"HostnameInCertificate=<server>.domain.com;"
)
Problemas de contenedores y CI
Bibliotecas del sistema ausentes en Linux
Síntomas:
ImportError: libltdl.so.7: cannot open shared object file: No such file or directory
ImportError: libkrb5.so.3: cannot open shared object file
Solution:
Instala los paquetes de sistema necesarios para tu distribución:
| Distribution | Comando Install |
|---|---|
| Ubuntu o Debian | sudo apt-get install libltdl7 libkrb5-3 libgssapi-krb5-2 |
| Red Hat o Fedora | sudo dnf install libtool-ltdl krb5-libs |
| Alpine | apk add libltdl krb5-libs |
Para ejemplos de Dockerfile, véase Contenedores y desarrollo local.
Errores SSL de macOS tras la instalación
Síntomas:
Te encuentras con errores relacionados con SSL cuando te conectas desde macOS, especialmente en Apple silicon.
Solution:
Instala OpenSSL con Homebrew y establece las banderas del enlazador:
brew install openssl
export LDFLAGS="-L/opt/homebrew/opt/openssl/lib"
export CPPFLAGS="-I/opt/homebrew/opt/openssl/include"