Problembehandlung für mssql-python

Verwenden Sie diesen Artikel, um Informationen zur Problembehandlung für den mssql-pythonTreiber zu finden. Beginne mit dem Symptom oder der Fehlermeldung, die zu deinem Problem passt.

Installationsprobleme

pip install schlägt fehl oder erstellt aus dem Quellcode

Für nicht unterstützte Python-Versionen, fehlende Räder, inaktive virtuelle Umgebungen und fehlende Linux-Bibliotheken siehe Installations- und Verbindungsprobleme im Troubleshoot.

Widersprüchliche Treiberinstallationen

Für Importfehler oder unerwartetes Verhalten, wenn mssql-python und pyodbc zusammen installiert werden, siehe Fehlerbehebung von Installation und Verbindungsproblemen.

Verbindungsprobleme

Keine Verbindung zum Server möglich

Für SQLSTATE 08001, unerreichbare Server, gestoppte Dienste und Azure SQL-Firewall-Regeln siehe Behandeln von Installations- und Verbindungsproblemen.

Fehler bei der Anmeldung

Für SQLSTATE 28000, Authentifizierungsmodus-Fehlanpassungen, ungültige Zugangsdaten und fehlende Datenbankbenutzer siehe Fehlerbehebung von Installations- und Verbindungsproblemen.

Verbindungstimeout

Für SQLSTATE HYT00 oder HYT01Netzwerklatenz, langsame Server und Verbindungszeit-Einstellungen siehe Fehlerbehebung von Installation und Verbindungsproblemen.

SSL-Zertifikatfehler

Informationen zu Fehlern bei nicht vertrauenswürdigen Zertifikaten und zu sicheren Optionen für die lokale Entwicklung finden Sie unter Beheben von Installations- und Verbindungsproblemen.

Abfrageausführungsprobleme

Tabelle oder Objekt nicht gefunden

Informationen zu SQLSTATE 42S02, zum Datenbankkontext, zu Prüfungen der Schemqualifizierung und zur Tabellenexistenz finden Sie unter Beheben von Abfrage-, Daten- und Vorgangsproblemen.

Syntaxfehler

Für SQLSTATE 42000, SQL-Syntax, String-Escape und parametrisierte Abfragen siehe Troubleshoot Query, Data, and Operation Issues.

Parameterfehler

Informationen zu SQLSTATE 07001, zur Anzahl der Platzhalter und zu unterstützten Parameterstilen finden Sie unter Abfragen, Daten- und Vorgangsprobleme beheben.

Probleme mit Datentypen

Fehler bei Date-Time-Umrechnungen

Für SQLSTATE- 22007 und Datetime-Parameter-Konvertierung siehe Fehlerbehebung von Abfrage-, Daten- und Betriebsproblemen.

Dezimalpräzisionsprobleme

Informationen zu abgeschnittenen oder gerundeten Dezimalwerten finden Sie unter Problembehandlung bei Abfrage-, Daten- und Vorgangsbeschwerden.

Unicode-Codierungsprobleme

Informationen zu fehlerhaft dargestellten Sonderzeichen und Unicode-Spaltentypen finden Sie unter Beheben von Abfrage-, Daten- und Betriebsproblemen.

Leistungsprobleme

Langsame Abfrageausführung

Zur Indizierung, für große Ergebnissätze und Verbindungspooling siehe Abfragen, Daten- und Vorgangprobleme behandeln.

Speicherprobleme bei großen Ergebnismengen

Informationen zum Streaming und zum Paginieren großer Ergebnismengen finden Sie unter Problembehandlung bei Abfrage-, Daten- und Vorgangsproblemen.

Transaktionsprobleme

Gültigkeitsbereich von temporären Tabellen mit Autocommit

Für temporäre Tabellen, die nach dem Rollback verschwinden, und DDL-Anweisungen, die Autocommit erfordern, siehe Beheben von Abfrage-, Daten- und Vorgangsproblemen.

Transaktion nicht abgeschlossen

Für Datenänderungen, die nach dem Schließen der Verbindung nicht bestehen bleiben, siehe Fehlerbehebung von Abfragen, Daten und Betriebsproblemen.

Deadlock-Fehler

Informationen zu SQLSTATE 40001, zu Hinweisen bei Wiederholungen und zur Analyse wiederkehrender Deadlocks finden Sie unter Behandeln von Abfrage-, Daten- und Vorgangsproblemen.

Probleme beim Massenladen

Verstöße gegen Einschränkungen während des Bulk Copy-Vorgangs

Informationen zu Verletzungen von Primärschlüssel-, Unique-, Prüf- oder Fremdschlüssel-Constraints bei der Massenkopie finden Sie unter Beheben von Abfrage-, Daten- und Vorgangsproblemen.

Spaltenabbildungsfehler

Bei Nichtübereinstimmungen bei der Massenkopie in Bezug auf Spaltenanzahl und Spaltenreihenfolge siehe Beheben von Abfrage-, Daten- und Vorgangsproblemen.

Typabweichungen beim Massenkopieren

Für trunkierte, abgerundete oder falsche Werte nach Massenkopien siehe Fehlerbehebung von Abfragen, Daten und Betriebsproblemen.

NumPy-Typbindungsfehler

Für Parameterbindungsfehler mit NumPy-Ganzzahl- oder Gleitkommatypen siehe Probleme mit Abfragen, Daten und Vorgängen beheben.

Bulkcopy mit temporären Tabellen

Zu Invalid object name-Fehlern, die auftreten, wenn Sie bulkcopy() mit einer Sitzungstemporärtabelle verwenden, finden Sie unter Beheben von Abfrage-, Daten- und Vorgangsproblemen.

Container- und CI-Probleme

Fehlende Systembibliotheken unter Linux

Für fehlende libltdl oder Kerberos-Bibliotheken in Linux-Umgebungen siehe Fehlerbehebung von Installations- und Verbindungsproblemen.

macOS SSL-Fehler nach der Installation

Für SSL-bezogene Fehler auf macOS, einschließlich Apple Silicon, siehe Fehlerbehebung der Installation und Verbindungsprobleme.

Diagnosewerkzeuge

Treiberprotokollierung aktivieren

Nutze mssql_python.setup_logging() , um das DEBUG-Logging zu aktivieren. Der Treiber protokolliert SQL-Anweisungen, Parameter, interne ODBC-Operationen und Verbindungszustandsänderungen.

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

Logdateien verwenden das CSV-Format und werden ab einer Größe von 512 MB automatisch rotiert, wobei fünf Sicherungskopien aufbewahrt werden. Der Treiber bereinigt sensible Daten wie Passwörter und Zugriffstoken in der Logausgabe.

Um Anwendungseinträge dem Treiberprotokoll hinzuzufügen, verwenden Sie 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

Die Protokollierung verursacht einen Leistungsaufwand. Aktiviere es nur, wenn du ein Problem behebest. Aktiviere es standardmäßig nicht in der Produktion.

Erhalte Fahrerinformationen

Rufen Sie die Treiberversion und Serverdetails von einer aktiven Verbindung ab:

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

Überprüfen des Verbindungszustands

Führe eine leichte Abfrage aus, um zu testen, ob eine Verbindung noch offen ist:

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

Schnellreferenz: Häufige Fehler

Fehler SQLSTATE Übliche Ursache Problembehandlung
Client kann keine Verbindung herstellen 08001 Server nicht erreichbar Keine Verbindung zum Server möglich
Fehler bei der Anmeldung 28000 Falsche Anmeldeinformationen Anmeldung fehlgeschlagen
Timeout überschritten HYT00 oder HYT01 Langsames Netzwerk Verbindungstimeout
Ungültiger Objektname 42S02 Falsche Tabelle oder Schema Tabelle oder Objekt nicht gefunden
Syntaxfehler 42000 SQL-Fehler Syntaxfehler
Verstoß gegen eine Einschränkung 23000 Verletzung des Fremdschlüssels oder Primärschlüssels Constraint-Verletzungen während des Massenkopiervorgangs
Deadlock 40001 Sperrkonflikt Deadlock-Fehler