Řešení potíží s mssql-python

Použijte tento článek k nalezení návodu k řešení problémů s ovladačem mssql-python . Začněte s příznakem nebo chybovou zprávou, která odpovídá vašemu problému.

Problémy s instalací

Instalace PIP selže nebo se sestaví ze zdrojového kódu

Pro nepodporované verze Python, chybějící kolečka, neaktivní virtuální prostředí a chybějící linuxové knihovny viz Řešení problémů s instalací a připojením.

Konfliktní instalace ovladačů

Pokud při společné instalaci mssql-python a pyodbc dochází k chybám při importu nebo k neočekávanému chování, viz Řešení problémů s instalací a připojením.

Problémy s připojením

Nelze se připojit k serveru

Pro SQLSTATE08001, nedostupné servery, zastavené služby a pravidla Azure SQL firewallu viz Řešení problémů s instalací a připojením.

Přihlášení se nezdařilo.

Pro SQLSTATE 28000, neshody v autentizačních režimech, neplatné přihlašovací údaje a chybějící uživatele databáze viz Řešení problémů s instalací a připojením.

Časový limit připojení vypršel

Pro nastavení SQLSTATE HYT00 nebo HYT01, latence sítě, pomalých serverů a časového limitu připojení viz Řešení problémů s instalací a připojením.

Chyby certifikátu SSL

Pro chyby nedůvěryhodných certifikátů a bezpečné možnosti lokálního vývoje viz Řešení problémů s instalací a připojením.

Problémy s prováděním dotazů

Tabulka nebo objekt nenalezený

Informace o SQLSTATE 42S02, databázovém kontextu, určení schématu a kontrole existence tabulek najdete v článku Řešení potíží s dotazy, daty a operacemi.

Chyba syntaxe

Informace o SQLSTATE 42000, syntaxi SQL, escapování řetězců a parametrizovaných dotazech najdete v článku Řešení potíží s dotazy, daty a operacemi.

Chyby parametrů

Informace o SQLSTATE 07001, počtech zástupných symbolů a podporovaných stylech parametrů naleznete v části Řešení potíží s dotazy, daty a operacemi.

Problémy s datovými typy

Chyby při převodu data a času

Informace o SQLSTATE 22007 a převodu parametru datetime naleznete v článku Troubleshoot query, data, and operation issues.

Problémy s desetinnou přesností

Informace o oříznutých nebo zaokrouhlených desetinných hodnotách naleznete v článku Řešení problémů s dotazy, daty a operacemi.

Problémy s kódováním v Unicode

Informace o poškozených speciálních znacích a datových typech sloupců Unicode najdete v tématu Řešení potíží s dotazy, daty a operacemi.

Problémy s výkonem

Pomalé provádění dotazů

Informace o indexování, velkých sadách výsledků a sdružování připojení najdete v tématu Řešení potíží s dotazy, daty a operacemi.

Problémy s pamětí při velkých výsledcích

Informace o streamování a stránkování velkých sad výsledků najdete v článku Řešení problémů s dotazy, daty a operacemi.

Problémy s transakcí

Rozsah platnosti dočasné tabulky s autocommit režimem

Informace o dočasných tabulkách, které po rollbacku zmizí, a příkazech DDL vyžadujících automatické potvrzení najdete v části Řešení problémů s dotazy, daty a operacemi.

Transakce neprovedena

Informace o změnách dat, které po uzavření připojení nepřetrvávají, naleznete v tématu Řešení problémů s dotazy, daty a operacemi.

Chyby zablokování

Informace o SQLSTATE40001, pokynech k opakování pokusu a analýze opakovaných deadlocků najdete v článku Řešení potíží s dotazy, daty a operacemi.

Problémy s hromadným zatížením

Porušení omezení během hromadného kopírování

Pro porušení primárního klíče, unikátu, kontroly nebo cizího klíče během hromadného kopírování viz Řešení problémů s dotazy, daty a operačními problémy.

Chyby při mapování sloupců

V případě neshod v počtu sloupců a jejich pořadí při hromadném kopírování viz Řešení problémů s dotazy, daty a operacemi.

Typové neshody během hromadné kopie

Informace o oříznutých, zaokrouhlených nebo nesprávných hodnotách po hromadném kopírování najdete v tématu Řešení potíží s dotazy, daty a operacemi.

Selhání vázání typu NumPy

Informace o potížích s vazbou parametrů u celočíselných typů nebo typů s plovoucí desetinnou čárkou v NumPy najdete v tématu Řešení problémů s dotazy, daty a operacemi.

Bulkcopy s dočasnými tabulkami

Informace o chybách Invalid object name při použití bulkcopy() s dočasnou tabulkou relace naleznete v tématu Řešení problémů s dotazy, daty a operacemi.

Problémy s kontejnery a CI

Chybějící systémové knihovny na Linuxu

Pro chybějící libltdl nebo Kerberos knihovny v linuxových prostředích viz Řešení problémů s instalací a připojením.

Chyby macOS SSL po instalaci

Pro chyby související se SSL na macOS, včetně Apple Silicon, viz Řešení problémů s instalací a připojením.

Diagnostické nástroje

Povolit logování ovladačů

Použijte mssql_python.setup_logging() k povolení protokolování DEBUG. Ovladač zaznamenává SQL příkazy, parametry, interní operace ODBC a změny stavu spojení.

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

Protokolové soubory používají formát CSV a při velikosti 512 MB se automaticky rotují s pěti záložními soubory. Ovladač sanitizuje citlivá data, jako jsou hesla a přístupové tokeny, ve výstupu z logu.

Pro přidání záznamů aplikací do logu ovladačů použijte 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

Logování má dopad na výkon. Zapněte ho jen při řešení problému. Nezapínejte to ve výrobě jako výchozí podmínku.

Získejte informace o řidiči

Získejte verzi ovladače a detaily serveru z aktivního připojení:

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

Kontrola stavu připojení

Spusť lehký dotaz, který otestuje, zda je spojení stále otevřené:

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

Rychlá reference: Běžné chyby

Error SQLSTATE Obvyklá příčina Troubleshooting
Klient nedokáže navázat spojení 08001 Nedostupný server Nelze se připojit k serveru
Přihlášení se nezdařilo. 28000 Nesprávné přihlašovací údaje Přihlášení neúspěšné
Vypršel časový limit. HYT00 nebo HYT01 Pomalá síť Vypršení časového limitu připojení
Neplatný název objektu 42S02 Nesprávná tabulka nebo schéma Tabulka nebo objekt nenalezený
Chyba syntaxe 42000 SQL chyba Chyba syntaxe
Porušení omezení 23000 Porušení cizího klíče nebo primárního klíče Porušení omezení při hromadném kopírování
Vzájemné zablokování 40001 Soutěž o zámky Chyby zablokování