Résoudre les problèmes liés à mssql-python

Utilisez cet article pour trouver des conseils de dépannage pour le mssql-python conducteur. Commencez par le symptôme ou le message d’erreur qui correspond à votre problème.

Problèmes d’installation

pip échoue à l’installation ou compile à partir du code source

Pour les versions de Python non prises en charge, les wheels manquants, les environnements virtuels inactifs et les bibliothèques Linux manquantes, consultez Résoudre les problèmes d’installation et de connexion.

Installations de pilotes en conflit

Pour les erreurs d’importation ou les comportements inattendus lorsque mssql-python et pyodbc sont installés ensemble, voir Dépannage des problèmes d’installation et de connexion.

Problèmes de connexion

Impossible de se connecter au serveur

Pour SQLSTATE08001, serveurs inaccessibles, services arrêtés et règles de pare-feu Azure SQL, voir Dépannage des problèmes d’installation et de connexion.

Échec de la connexion

Pour SQLSTATE 28000, les incompatibilités de modes d’authentification, les identifiants invalides et les utilisateurs manquants de bases de données, voir Dépannage des problèmes d’installation et de connexion.

Délai d’expiration de la connexion

Pour SQLSTATE HYT00 ou HYT01, la latence réseau, les serveurs lents et les paramètres de délai de connexion, voir Dépannage des problèmes d’installation et de connexion.

Erreurs de certificat SSL

Pour les erreurs de certificat non fiables et les options de développement local sécurisées, voir Dépannage des problèmes d’installation et de connexion.

Problèmes d’exécution des requêtes

Table ou objet non trouvé

Pour les vérifications SQLSTATE 42S02, du contexte de la base de données, de la qualification du schéma et de l’existence de la table, voir Résoudre les problèmes liés aux requêtes, aux données et aux opérations.

Erreur de syntaxe

Pour SQLSTATE 42000, ainsi que pour la syntaxe SQL, l’échappement de chaînes et les requêtes paramétrées, voir Résoudre les problèmes liés aux requêtes, aux données et aux opérations.

Erreurs de paramètres

Pour SQLSTATE 07001, le nombre d’espaces réservés et les styles de paramètres pris en charge, consultez Résoudre les problèmes liés aux requêtes, aux données et aux opérations.

Problèmes de type de données

Erreurs de conversion de date et d’heure

Pour SQLSTATE 22007 et la conversion du paramètre datetime, voir Résoudre les problèmes de requête, de données et d’opération.

Problèmes de précision décimale

Pour les valeurs décimales tronquées ou arrondies, voir Résoudre les problèmes de requête, de données et d’opérations.

Problèmes d’encodage Unicode

Pour les caractères spéciaux illisibles et les types de colonnes Unicode, voir Résoudre les problèmes de requête, de données et d’opération.

Problèmes de performance

Exécution lente des requêtes

Pour l’indexation, les jeux de résultats volumineux et le regroupement de connexions, voir Résoudre les problèmes de requête, de données et d’opérations.

Problèmes de mémoire avec des résultats volumineux

Pour le streaming et la pagination de grands ensembles de résultats, voir Résoudre les problèmes liés aux requêtes, aux données et aux opérations.

Problèmes de transaction

Portée de table temporaire avec validation automatique

Pour les tables temporaires qui disparaissent après une annulation et les instructions DDL nécessitant une validation automatique, voir Résoudre les problèmes de requête, de données et d’opérations.

Transaction non engagée

Pour les modifications de données qui ne sont pas conservées après la fermeture de la connexion, consultez Résoudre les problèmes de requête, de données et d’opération.

Erreurs d’interblocage

Pour SQLSTATE 40001, les conseils de réévaluation et l’analyse des blocages récurrents, voir Problèmes de requête, données et opérations.

Problèmes de chargement en masse

Violations de contraintes lors d’une copie en bloc

Pour les violations de contrainte de clé primaire, d’unicité, CHECK ou de clé étrangère lors de la copie en bloc, voir Résoudre les problèmes de requête, de données et d’opération.

Erreurs de correspondance de colonnes

Pour les problèmes de non-correspondance du nombre de colonnes et de l’ordre des colonnes lors d’une copie en bloc, voir Résoudre les problèmes liés aux requêtes, aux données et aux opérations.

Désaccords de type lors de la copie en vrac

Pour les valeurs tronquées, arrondies ou incorrectes après une copie en masse, consultez Résoudre les problèmes de requête, de données et d’opération.

Défaillances de liaison de type NumPy

Pour les échecs de liaison de paramètres avec des types entiers ou à virgule flottante de NumPy, voir Résoudre les problèmes de requête, de données et d’opération.

Bulkcopy avec tables temporaires

Pour résoudre les erreurs Invalid object name lorsque vous utilisez bulkcopy() avec une table temporaire de session, consultez Résoudre les problèmes de requête, de données et d’opération.

Problèmes liés aux conteneurs et à la CI

Bibliothèques système manquantes sur Linux

Pour les bibliothèques manquantes libltdl ou Kerberos dans les environnements Linux, voir Dépannage des problèmes d’installation et de connexion.

Erreurs SSL de macOS après installation

Pour les erreurs liées à SSL sur macOS, y compris Apple Silicon, voir Dépannage des problèmes d’installation et de connexion.

Outils de diagnostic

Activer la journalisation des pilotes

Utilisez mssql_python.setup_logging() pour activer la journalisation DEBUG. Le pilote enregistre les instructions SQL, les paramètres, les opérations ODBC internes et les changements d’état de connexion.

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")

Les fichiers journaux utilisent le format CSV et font l’objet d’une rotation automatique lorsqu’ils atteignent 512 Mo, avec cinq fichiers de sauvegarde. Le pilote désinfecte les données sensibles telles que les mots de passe et les jetons d’accès dans les sorties journalières.

Pour ajouter des entrées d’application au journal des pilotes, utilisez 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

La journalisation comporte une surcharge de performance. Activez-le uniquement lorsque vous résolvez un problème. Ne l’activez pas en production par défaut.

Obtenez les informations du conducteur

Récupérez la version du pilote et les détails du serveur depuis une connexion active :

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)}")

Vérifier l’état de la connexion

Lancez une requête légère pour vérifier si une connexion est toujours ouverte :

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")

Référence rapide : Erreurs courantes

Error SQLSTATE Cause courante Résolution des problèmes
Le client ne peut pas établir de connexion 08001 Serveur inaccessible Impossible de se connecter au serveur
Échec de la connexion 28000 Informations d’identification incorrectes Connexion échouée
Délai expiré HYT00 ou HYT01 Réseau lent Délai de connexion
Nom d’objet non valide 42S02 Tableau ou schéma incorrect Table ou objet non trouvé
Erreur de syntaxe 42000 Erreur SQL Erreur de syntaxe
Violation de contrainte 23000 Violation de clé étrangère ou de clé primaire Violations de contraintes lors d’une copie en masse
Deadlock 40001 Contention de verrouillage Erreurs de blocage