Risoluzione dei problemi mssql-python

Usa questo articolo per trovare indicazioni di risoluzione dei problemi per il mssql-python conducente. Inizia con il sintomo o il messaggio di errore che corrisponde al tuo problema.

Problemi di installazione

Fallimento dell'installazione di PIP o compilazione dal sorgente

Per versioni Python non supportate, ruote mancanti, ambienti virtuali inattivi e librerie Linux mancanti, vedi Troubleshoot installazione e problemi di connessione.

Installazioni di driver in conflitto

Per errori di importazione o comportamenti imprevisti quando mssql-python e pyodbc sono installati insieme, vedi Risoluzione problemi di installazione e connessione.

Problemi di connessione

Impossibile connettersi al server

Per SQLSTATE08001, server irraggiungibili, servizi fermi e regole firewall Azure SQL, vedi Troubleshoot installazione e problemi di connessione.

Accesso non riuscito

Per SQLSTATE 28000, disallineamenti di modalità di autenticazione, credenziali non valide e utenti del database assenti, vedi Troubleshoot installazione e problemi di connessione.

Timeout della connessione

Per SQLSTATE HYT00 o HYT01, latenza di rete, server lenti e impostazioni di timeout di connessione, vedi Risoluzione problemi di installazione e connessione.

Errori del certificato SSL

Per errori di certificato non affidabili e opzioni di sviluppo locale sicure, vedi Risoluzione problemi di installazione e connessione.

Problemi di esecuzione delle query

Tabella o oggetto non trovato

Per informazioni su SQLSTATE 42S02, contesto del database, qualificazione dello schema e controlli dell'esistenza delle tabelle, vedere Risolvere i problemi relativi a query, dati e operazioni.

Errore di sintassi

Per informazioni su SQLSTATE 42000, la sintassi SQL, l'escape delle stringhe e le query parametrizzate, vedere Risolvere i problemi relativi a query, dati e operazioni.

Errori dei parametri

Per informazioni su SQLSTATE 07001, il numero di segnaposto e gli stili di parametro supportati, vedere Risolvere i problemi relativi a query, dati e operazioni.

Problemi con i tipi di dati

Errori di conversione di data e ora

Per la conversione dei parametri SQLSTATE 22007 e datetime, vedere Risolvere i problemi relativi a query, dati e operazioni.

Problemi di precisione decimale

Per valori decimali troncati o arrotondati, vedi Risoluzione problemi di query, dati e operazioni.

Problemi di codifica Unicode

Per informazioni sui caratteri speciali danneggiati e sui tipi di colonna Unicode, vedere Risolvere i problemi relativi a query, dati e operazioni.

Problemi di prestazioni

Esecuzione lenta delle query

Per informazioni su indicizzazione, set di risultati di grandi dimensioni e pooling delle connessioni, vedere Risolvere i problemi relativi a query, dati e operazioni.

Problemi di memoria con risultati grandi

Per lo streaming e la paginazione di grandi set di risultati, vedi Risoluzione problemi di query, dati e operazione.

Problemi di transazione

Visibilità delle tabelle temporanee con autocommit

Per le tabelle temporanee che scompaiono dopo il rollback e per le istruzioni DDL che richiedono l'autocommit, consulta Risolvere i problemi relativi a query, dati e operazioni.

Transazione non commessa

Per i cambiamenti ai dati che non persistono dopo la chiusura della connessione, vedi Risoluzione di problemi, questioni dati e operazioni.

Errori di deadlock

Per informazioni su SQLSTATE 40001, sulle indicazioni per i nuovi tentativi e sull'analisi dei deadlock ricorrenti, vedere Troubleshoot query, data, and operation issues.

Problemi di carico in blocco

Violazioni dei vincoli durante la copia di massa

Per le violazioni dei vincoli di chiave primaria, di unicità, di controllo o di chiave esterna durante la copia in blocco, vedere Risolvere i problemi relativi a query, dati e operazioni.

Errori di mappatura delle colonne

Per le mancate corrispondenze nel numero di colonne e nell'ordine delle colonne durante la copia in blocco, vedi Risolvere i problemi relativi a query, dati e operazioni.

Discorrispondenze di tipo durante la copia di massa

Per valori troncati, arrotondati o errati dopo una copia in massa, vedi Risoluzione problemi di query, dati e operazioni.

Errori di binding dei tipi NumPy

Per gli errori nel binding dei parametri con tipi interi o in virgola mobile di NumPy, consulta Risolvere i problemi relativi a query, dati e operazioni.

Copia di massa con tabelle temporanee

Per gli errori Invalid object name quando si usa bulkcopy() con una tabella temporanea di sessione, consulta Risoluzione dei problemi di query, dati e operazioni.

Problemi di container e CI

Librerie di sistema mancanti su Linux

Per librerie libltdl o Kerberos mancanti negli ambienti Linux, vedere Risolvere i problemi di installazione e connessione.

Errori SSL di macOS dopo l'installazione

Per gli errori relativi a SSL su macOS, incluso Apple silicon, vedi Risoluzione problemi di installazione e connessione.

Strumenti di diagnostica

Abilita il logging dei driver

Usare mssql_python.setup_logging() per abilitare il DEBUG logging. Il driver registra istruzioni SQL, parametri, operazioni ODBC interne e cambiamenti di stato della connessione.

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

I file di log usano il formato CSV e ruotano automaticamente a 512 MB con cinque backup. Il driver maschera i dati sensibili, come password e token di accesso, nell'output di log.

Per aggiungere le voci dell'applicazione al registro dei driver, usa 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")

Attenzione

Il logging ha un impatto sulle prestazioni. Attivalo solo quando risolvi un problema. Non abilitarlo in produzione di default.

Ottieni informazioni sul conducente

Recupera la versione del driver e i dettagli del server da una connessione attiva:

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

Controllare lo stato della connessione

Esegui una query leggera per verificare se una connessione è ancora aperta:

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

Riferimento rapido: Errori comuni

Error SQLSTATE Causa comune Troubleshooting
Il client non è in grado di stabilire la connessione 08001 Server non raggiungibile Impossibile connettersi al server
Accesso non riuscito 28000 Credenziali errate Accesso fallito
Il timeout è scaduto HYT00 oppure HYT01 Rete lenta Timeout di connessione
Nome di oggetto non valido 42S02 Tabella o schema errato Tabella o oggetto non trovato
Errore di sintassi 42000 Errore SQL Errore di sintassi
Violazione del vincolo 23000 Violazione della chiave esterna o della chiave primaria Violazioni dei vincoli durante la copia di massa
Deadlock 40001 Conflitto di blocco Errori di blocco