Felsökning mssql-python

Använd den här artikeln för att hitta felsökningsvägledning för föraren mssql-python . Börja med symtomet eller felmeddelandet som matchar ditt problem.

Installationsproblem

Pip-installationen misslyckas eller byggs från källkoden

För icke-stödda Python-versioner, saknade hjul, inaktiva virtuella miljöer och saknade Linux-bibliotek, se Felsökning av installations- och anslutningsproblem.

Motstridiga installationer av drivrutiner

För importfel eller oväntat beteende när mssql-python och pyodbc installeras tillsammans, se Felsökning av installations- och anslutningsproblem.

Anslutningsproblem

Kan inte ansluta till servern

För SQLSTATE08001, oåtkomliga servrar, avbrutna tjänster och Azure SQL-brandväggsregler, se Felsökning av installations- och anslutningsproblem.

Inloggningen misslyckades

För SQLSTATE 28000, autentiseringslägen som inte matchar, ogiltiga inloggningsuppgifter och saknade databasanvändare, se Felsökning av installations- och anslutningsproblem.

Tidsgräns för anslutning

För SQLSTATE HYT00 eller HYT01, nätverkslatens, långsamma servrar och anslutningstidsinställningar, se Felsökning av installations- och anslutningsproblem.

SSL-certifikatfel

För fel med ej betrodda certifikat och säkra alternativ för lokal utveckling, se Felsök installation och anslutningsproblem.

Problem med frågeexekvering

Tabell eller objekt hittades ej

För SQLSTATE 42S02-, databaskontext-, schema-kvalificering och tabellexistenskontroller, se Felsökning, data- och operationsfrågor.

Syntaxfel

För SQLSTATE 42000, SQL-syntax, strängeescape och parameteriserade frågor, se Felsökning av frågor, data och operationer.

Parameterfel

För SQLSTATE07001, platshållarantal och stödda parameterstilar, se Felsökning av frågor, data och driftproblem.

Datatypproblem

Fel vid konvertering av datum och tid

För SQLSTATE22007- och datetime-parameterkonvertering, se Felsökning av frågor, data och driftproblem.

Decimalprecisionsproblem

För avkortade eller avrundade decimalvärden, se Felsök frågor, data och åtgärdsproblem.

Unicode-kodningsproblem

För osammanhängande specialtecken och Unicode-kolumntyper, se Felsökningsfrågor, data och funktionsfrågor.

Prestandaproblem

Långsam frågeexekvering

För indexering, stora resultatuppsättningar och anslutningspoolning, se Felsökning av frågor, data och funktionsfrågor.

Minnesproblem med stora resultat

För strömning och paginering av stora resultatuppsättningar, se Felsökning av frågor, data och driftfrågor.

Transaktionsproblem

Temporär tabellscoping med autocommit

För temporära tabeller som försvinner efter rollback och DDL-satser som kräver autocommit, se Felsökning av frågor, data och operationer.

Transaktion som inte är genomförd

För dataändringar som inte kvarstår efter att anslutningen stängts, se Felsökning, data och funktionsfrågor.

Dödlägesfel

För SQLSTATE 40001, återförsöksguider och återkommande deadlock-analys, se Felsökning av frågor, data och driftfrågor.

Bulklastproblem

Begränsningsbrott under bulkkopiering

Information om överträdelser av primärnycklar, unika begränsningar, kontrollvillkor eller främmande nycklar vid bulkkopiering finns i Felsöka frågor, data och åtgärdsproblem.

Fel vid kolumnmappning

Information om problem vid masskopiering där antalet kolumner eller kolumnordningen inte stämmer finns i Felsöka frågor, data och åtgärdsproblem.

Typkonflikter vid bulkkopiering

För avkortade, avrundade eller felaktiga värden efter masskopiering, se Felsöka frågor, data och åtgärdsproblem.

Bindningsfel av NumPy-typ

För parameterbindningsfel med NumPy-heltals- eller flyttalstyper, se Felsökning av frågor, data och funktionsfrågor.

Bulkkopiering med tillfälliga tabeller

För Invalid object name fel när du använder bulkcopy() med en sessionstillfällig tabell, se Felsökning av frågor, data och driftproblem.

Container- och CI-problem

Saknade systembibliotek på Linux

För saknade libltdl eller Kerberos-bibliotek i Linux-miljöer, se Felsökning av installations- och anslutningsproblem.

macOS SSL-fel efter installation

För SSL-relaterade fel på macOS, inklusive Apple Silicon, se Felsökning av installations- och anslutningsproblem.

Diagnosverktyg

Aktivera drivrutinsloggning

Använd mssql_python.setup_logging() för att aktivera DEBUG-loggning. Drivrutinen loggar SQL-satser, parametrar, interna ODBC-operationer och förändringar i anslutningstillstånd.

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

Loggfiler använder CSV-format och roterar automatiskt vid 512 MB med fem säkerhetskopior. Drivrutinen sanerar känslig data som lösenord och åtkomsttokens i loggutdata.

För att lägga till applikationsposter i drivrutinsloggen, använd 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

Loggning medför prestandapåverkan. Aktivera det endast när du felsöker ett problem. Aktivera det inte i produktion som standard.

Få information om föraren

Hämta drivrutinsversionen och serverdetaljer från en aktiv anslutning:

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

Kontrollera anslutningstillstånd

Kör en lättviktig fråga för att testa om en anslutning fortfarande är öppen:

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

Snabb referens: Vanliga fel

Error SQLSTATE Vanlig orsak Felsökning
Klient kan inte upprätta anslutning 08001 Servern kan inte nås Kan inte ansluta till servern
Inloggningen misslyckades 28000 Felaktiga autentiseringsuppgifter Inloggning misslyckades
Tidsgränsen har upphört att gälla HYT00 eller HYT01 Långsamt nätverk Tidsgräns för anslutning
Ogiltigt objektnamn 42S02 Felaktig tabell eller schema Tabell eller objekt hittades ej
Syntaxfel 42000 SQL-fel Syntaxfel
Begränsningsfel 23000 Främmande nyckel- eller primärnyckelöverträdelse Begränsningsbrott under bulkkopiering
Dödläge 40001 Låskonflikt Dödlägesfel