Rozwiązywanie problemów z mssql-python

Skorzystaj z tego artykułu, aby znaleźć wskazówki dotyczące rozwiązywania problemów ze sterownikiem mssql-python . Zacznij od objawu lub komunikatu o błędzie, który pasuje do Twojego problemu.

Problemy z instalacją

Instalacja pip kończy się niepowodzeniem lub pakiet jest kompilowany ze źródeł

W przypadku nieobsługiwanych wersji Python, brakujących kół, nieaktywnych środowisk wirtualnych oraz brakujących bibliotek Linuksa zobacz Rozwiązywanie problemów z instalacją i połączeniem.

Konfliktowe instalacje sterowników

W przypadku błędów importowania lub nieoczekiwanego działania, gdy składniki mssql-python i pyodbc są zainstalowane razem, zobacz Rozwiązywanie problemów z instalacją i połączeniem.

Problemy z połączeniem

Nie można połączyć się z serwerem

W przypadku SQLSTATE 08001, niedostępnych serwerów, zatrzymanych usług i reguł zapory Azure SQL zobacz artykuł Rozwiązywanie problemów z instalacją i połączeniem.

Logowanie nie powiodło się

W przypadku SQLSTATE 28000, niezgodności trybów uwierzytelniania, nieprawidłowych danych uwierzytelniających i brakujących użytkowników bazy danych, zobacz Rozwiązywanie problemów z instalacją i połączeniem.

Przekroczenie limitu czasu połączenia

Aby uzyskać informacje o SQLSTATE HYT00 lub HYT01, opóźnieniach sieci, wolnych serwerach oraz ustawieniach limitu połączenia, zobacz Troubleshoot installation and connection issues.

Błędy certyfikatu SSL

W przypadku błędów związanych z niezaufanym certyfikatem oraz bezpiecznych opcji lokalnego programowania zobacz Troubleshoot installation and connection issues.

Problemy z wykonywaniem zapytań

Tabela lub obiekt nie znaleziony

Informacje na temat SQLSTATE 42S02, kontekstu bazy danych, kwalifikowania schematem oraz sprawdzania istnienia tabel można znaleźć w artykule Rozwiązywanie problemów z zapytaniami, danymi i operacjami.

Błąd składniowy

Informacje o SQLSTATE 42000, składni SQL, sekwencjach ucieczki w ciągach znaków i zapytaniach parametryzowanych można znaleźć w sekcji Rozwiązywanie problemów z zapytaniami, danymi i operacjami.

Błędy parametrów

Informacje o SQLSTATE 07001, liczbie symboli zastępczych i obsługiwanych stylach parametrów można znaleźć w temacie Troubleshoot query, data, and operation issues.

Problemy z typem danych

Błędy konwersji daty i godziny

Informacje na temat konwersji parametrów SQLSTATE 22007 i datetime można znaleźć w artykule Rozwiązywanie problemów z zapytaniami, danymi i operacjami.

Problemy z precyzją dziesiętną

Informacje o obciętych lub zaokrąglonych wartościach dziesiętnych zawiera temat Troubleshoot query, data, and operation issues.

Problemy z kodowaniem Unicode

W przypadku zniekształconych znaków specjalnych oraz kolumn typu Unicode zobacz Troubleshoot query, data, and operation issues.

Problemy z wydajnością

Powolne wykonywanie zapytań

Informacje na temat indeksowania, dużych zbiorów wyników i puli połączeń można znaleźć w temacie Rozwiązywanie problemów z zapytaniami, danymi i operacjami.

Problemy z pamięcią w przypadku dużych wyników

Informacje o strumieniowaniu i paginacji dużych zbiorów wyników znajdziesz w artykule Rozwiązywanie problemów z zapytaniami, danymi i operacjami.

Problemy transakcyjne

Zakres tabeli tymczasowej z automatycznym zatwierdzeniem

Informacje na temat tabel tymczasowych, które znikają po wycofaniu, oraz instrukcji DDL wymagających automatycznego zatwierdzania znajdują się w sekcji Rozwiązywanie problemów z zapytaniami, danymi i operacjami.

Transakcja nie została dokonana

W przypadku zmian danych, które nie są zachowywane po zamknięciu połączenia, zobacz Rozwiązywanie problemów z zapytaniami, danymi i operacjami.

Błędy zakleszczeń

Aby uzyskać informacje na temat SQLSTATE 40001, wskazówek dotyczących ponawiania prób oraz analizy powtarzających się zakleszczeń, zobacz Rozwiązywanie problemów z zapytaniami, danymi i operacjami.

Problemy z obciążeniem zbiorczym

Naruszenia ograniczeń podczas kopiowania zbiorczego

W przypadku naruszeń ograniczeń klucza podstawowego, unikatowego, CHECK lub klucza obcego podczas kopiowania masowego zobacz Rozwiązywanie problemów z zapytaniami, danymi i operacjami.

Błędy odwzorowania kolumn

Informacje o niezgodnościach liczby kolumn i kolejności kolumn podczas kopiowania zbiorczego można znaleźć w Troubleshoot query, data, and operation issues.

Niezgodności typów podczas kopiowania masowego

Informacje na temat obciętych, zaokrąglonych lub nieprawidłowych wartości po kopiowaniu zbiorczym można znaleźć w artykule Rozwiązywanie problemów z zapytaniami, danymi i operacjami.

Awarie wiązania typu NumPy

W przypadku błędów podczas wiązania parametrów z typami całkowitymi lub zmiennoprzecinkowymi biblioteki NumPy zobacz Rozwiązywanie problemów z zapytaniami, danymi i operacjami.

Kopiowanie zbiorcze z tabelami tymczasowymi

Informacje o Invalid object name błędach występujących podczas używania bulkcopy() z tymczasową tabelą sesji można znaleźć w artykule Rozwiązywanie problemów z zapytaniami, danymi i operacjami.

Problemy z kontenerami i CI

Brakujące biblioteki systemowe na Linuksie

W przypadku braku elementu libltdl lub bibliotek Kerberos w środowiskach systemu Linux zobacz artykuł Rozwiązywanie problemów z instalacją i połączeniem.

Błędy SSL w systemie macOS po instalacji

W przypadku błędów związanych z SSL w systemie macOS, w tym na komputerach z Apple silicon, zobacz temat Rozwiązywanie problemów z instalacją i połączeniem.

Narzędzia diagnostyczne

Włącz logowanie sterowników

Użyj mssql_python.setup_logging() do włączenia logowania DEBUG. Sterownik rejestruje instrukcje SQL, parametry, wewnętrzne operacje ODBC oraz zmiany stanu połączenia.

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

Pliki logów mają format CSV i są automatycznie rotowane po osiągnięciu rozmiaru 512 MB, z zachowaniem pięciu kopii zapasowych. Sterownik oczyszcza wrażliwe dane, takie jak hasła i tokeny dostępu, w wyjściu dziennika.

Aby dodać wpisy aplikacji do logu sterownika, użyj 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

Rejestrowanie powoduje narzut wydajnościowy. Włącz go tylko wtedy, gdy rozwiązujesz problem. Domyślnie nie włączaj tego w produkcji.

Uzyskaj informacje o kierowcy

Pobierz wersję sterownika i szczegóły serwera z aktywnego połączenia:

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

Sprawdzanie stanu połączenia

Uruchom lekkie zapytanie, aby sprawdzić, czy połączenie jest nadal otwarte:

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

Szybkie odniesienie: Typowe błędy

Błąd SQLSTATE Typowa przyczyna Rozwiązywanie problemów
Klient nie może nawiązać połączenia 08001 Serwer jest niedostępny Nie można połączyć się z serwerem
Logowanie nie powiodło się 28000 Niepoprawne poświadczenia Logowanie się nie udało
Upłynął limit czasu HYT00 lub HYT01 Powolna sieć Przekroczenie limitu czasu połączenia
Nieprawidłowa nazwa obiektu 42S02 Nieprawidłowa tabela lub schemat Tabela lub obiekt nie znaleziony
Błąd składniowy 42000 Błąd SQL Błąd składniowy
Naruszenie ograniczeń 23000 Naruszenie klucza obcego lub klucza podstawowego Naruszenia ograniczeń podczas kopiowania zbiorczego
Zakleszczenie 40001 Zawartość blokady Błędy zakleszczenia