Устранение неполадок mssql-python

Используйте эту статью, чтобы найти руководство по mssql-python устранению неисправностей для водителя. Начните с симптома или сообщения об ошибке, которое соответствует вашей проблеме.

Проблемы с установкой

Установка pip завершается с ошибкой или выполняется сборка из исходного кода

Для неподдерживаемых версий Python, отсутствующих колёс, неактивных виртуальных сред и отсутствующих библиотек Linux см. раздел Устранение неполадок, установка и проблемы с подключением.

Конфликтующие установки драйверов

Для ошибок импорта или неожиданного поведения при mssql-pythonpyodbc совместной установке см. раздел «Устранение неполадок, установка и проблемы с подключением».

Проблемы с подключением

Не удаётся подключиться к серверу

Для SQLSTATE08001, недоступных серверов, остановленных сервисов и правил межсетевого экрана Azure SQL см. раздел Устранение неполадок с установкой и проблемами подключения.

Сбой входа

Для SQLSTATE 28000, несоответствий в режимах аутентификации, недействительных учетных данных и отсутствии пользователей базы данных см. раздел «Устранение неполадок: установка и проблемы с подключением».

Время соединения истекло

Для SQLSTATE HYT00 или HYT01, сетевой задержки, медленных серверов и тайм-аута соединения см. раздел Устранение неполадок установки и проблем с подключением.

Ошибки SSL-сертификата

Для ошибок ненадёжных сертификатов и безопасных вариантов локальной разработки смотрите раздел Устранение неполадок, установка и проблемы с подключением.

Проблемы с выполнением запросов

Таблица или объект не найден.

Сведения о SQLSTATE 42S02, контексте базы данных, квалификации схемы и проверке существования таблиц см. в разделе Устранение неполадок, связанных с запросами, данными и операциями.

Синтаксическая ошибка

Сведения о SQLSTATE 42000, синтаксисе SQL, экранировании строк и параметризованных запросах см. в Устранение неполадок с запросами, данными и операциями.

Ошибки параметров

Сведения о SQLSTATE 07001, количестве заполнителей и поддерживаемых стилях параметров см. в разделе Устранение неполадок, связанных с запросами, данными и операциями.

Проблемы с типами данных

Ошибки конвертации времени и даты

Сведения о SQLSTATE 22007 и преобразовании параметра datetime см. в разделе «Устранение неполадок, связанных с запросами, данными и операциями».

Проблемы с десятичной точностью

Для усечённых или округлённых десятичных значений см. раздел «Устранение неполадок, вопросы запроса, данных и эксплуатации».

Проблемы с кодированием Unicode

Для искажённых специальных символов и типов столбцов в Unicode см. раздел «Устранение неполадок: вопросы запроса, данных и операций».

Проблемы с производительностью

Медленное выполнение запросов

Для индексации, больших наборов результатов и пула соединений см. раздел «Устранение неполадок: вопросы запроса, данных и эксплуатации».

Проблемы с памятью при больших результатах

Для потоковой передачи и страницирования больших наборов результатов см. раздел Устранение неполадок, вопросы запросов, данных и эксплуатации.

Вопросы транзакций

Область видимости временной таблицы при автокоммите

Сведения о временных таблицах, исчезающих после отката, и операторах DDL, требующих автофиксации, см. в разделе Устранение неполадок с запросами, данными и операциями.

Сделка не была совершена

Для изменений данных, которые не сохраняются после закрытия соединения, см. раздел «Устранение неполадок, вопросы с данными и эксплуатацией».

Ошибки взаимоблокировки

Сведения о SQLSTATE 40001, рекомендации по повторным попыткам и анализ повторяющихся взаимоблокировок см. в разделе «Устранение неполадок, связанных с запросами, данными и операциями».

Проблемы с массовой нагрузкой

Нарушения ограничений во время массового копирования

Для нарушений первичного ключа, уникального, проверочного или внешнего ключа при массовом копировании см. раздел «Устранение неполадок, вопросы запроса, данных и эксплуатации».

Ошибки отображения столбцов

Для несоответствий количества столбцов и порядков колонок при массовом копировании см. раздел «Устранение неполадок: вопросы запроса, данных и эксплуатации».

Несоответствия типов при массовом копировании

Для усечённых, округлённых или неправильных значений после массового копирования см. раздел «Устранение неполадок: вопросы запроса, данных и эксплуатации».

Сбои связывания типа NumPy

Сведения об ошибках при привязке параметров с типами NumPy: целочисленными или с плавающей точкой см. в разделе Устранение неполадок с запросами, данными и операциями.

Массовое копирование с временными таблицами

Ошибки Invalid object name, возникающие при использовании bulkcopy() с временной таблицей сеанса, описаны в разделе «Устранение неполадок: проблемы с запросами, данными и операциями».

Вопросы контейнера и CI

Отсутствующие системные библиотеки в Linux

Если в среде Linux отсутствует libltdl или библиотеки Kerberos, см. Устранение неполадок при установке и подключении.

Ошибки macOS SSL после установки

Для ошибок, связанных с SSL, на macOS, включая Apple Silicon, см. раздел Диагностика установки и проблемы с подключением.

Средства диагностики

Включить логирование драйверов

Используйте mssql_python.setup_logging(), чтобы включить ведение журнала DEBUG. Драйвер фиксирует SQL-операторы, параметры, внутренние операции ODBC и изменения состояния соединения.

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

Файлы журналов используют формат CSV; при достижении 512 МБ выполняется их автоматическая ротация с сохранением пяти резервных копий. Драйвер маскирует конфиденциальные данные, такие как пароли и токены доступа, в выводе журналов.

Чтобы добавить записи приложений в лог драйверов, используйте 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")

Предостережение

Логирование связано с накладными расходами по производительности. Включайте его только при устранении проблемы. Не включайте его в продакшене по умолчанию.

Получите информацию о водителях

Получите версию драйвера и данные сервера из активного соединения:

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

Проверка состояния подключения

Запустите лёгкий запрос, чтобы проверить, открыто ли соединение:

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

Краткая справка: Распространённые ошибки

Ошибка SQLSTATE Распространенная причина Устранение неполадок
Клиенту не удается установить подключение 08001 Сервер недоступен Не удаётся подключиться к серверу
Сбой входа 28000 Неправильные учетные данные Неудачный вход
Время ожидания истекло. HYT00 или HYT01 Медленная сеть Время ожидания соединения
Недопустимое имя объекта 42S02 Неправильная таблица или схема Таблица или объект не найден.
Синтаксическая ошибка 42000 Ошибка SQL Синтаксическая ошибка
Нарушение ограничений 23000 Нарушение внешнего ключа или первичного ключа Нарушения ограничений во время массового копирования
Deadlock 40001 Конкуренция за блокировку Ошибки взаимоблокировки