Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Utilize este artigo para encontrar orientações de resolução de problemas para o mssql-python condutor. Começa pelo sintoma ou mensagem de erro que corresponde ao teu problema.
Problemas de instalação
o pip install falha ou compila a partir do código-fonte
Para versões de Python não suportadas, rodas em falta, ambientes virtuais inativos e bibliotecas Linux em falta, consulte Resolução de problemas de instalação e ligação.
Instalações de drivers conflitantes
Para erros de importação ou comportamentos inesperados quando mssql-python e pyodbc são instalados em conjunto, consulte Resolução de problemas de instalação e ligação.
Problemas de conexão
Impossível ligar-se ao servidor
Para SQLSTATE08001, servidores inalcançáveis, serviços parados e regras de firewall SQL do Azure, veja Resolução de problemas de instalação e ligação.
Início de sessão falhado
Para SQLSTATE 28000, incompatibilidades no modo de autenticação, credenciais inválidas e utilizadores de base de dados em falta, consulte Resolução de problemas de instalação e ligação.
Tempo limite de ligação
Para SQLSTATE HYT00 ou HYT01, latência de rede, servidores lentos e definições de tempo limite de ligação, consulte Resolução de problemas de instalação e ligação.
Erros de certificado SSL
Para erros de certificado não confiáveis e opções seguras de desenvolvimento local, consulte Resolução de problemas de instalação e ligação.
Problemas de execução de consultas
Tabela ou objeto não encontrado
Para SQLSTATE 42S02, contexto da base de dados, qualificação do esquema e verificações da existência de tabelas, consulte Resolução de problemas de consulta, dados e operações.
Erro de sintaxe
Para SQLSTATE 42000, sintaxe SQL, escape de strings e consultas parametrizadas, veja Resolução de problemas de consulta, dados e operações.
Erros de parâmetros
Para os SQLSTATE 07001, o número de marcadores de posição e os estilos de parâmetros suportados, consulte Resolver problemas de consultas, dados e operações.
Problemas de tipo de dados
Erros de conversão de data e hora
Para SQLSTATE 22007 e conversão de parâmetros de data e hora, veja Resolução de problemas de consultas, dados e operações.
Questões de precisão decimal
Para valores decimais truncados ou arredondados, veja Resolução de problemas de consulta, dados e operação.
Problemas de codificação Unicode
Para caracteres especiais distorcidos e tipos de colunas Unicode, consulte Troubleshoot query, data, and operation issues.
Problemas de desempenho
Execução lenta da consulta
Para indexação, grandes conjuntos de resultados e agregação de ligações, veja Resolver problemas de consultas, dados e operações.
Problemas de memória com resultados de grande dimensão
Para transmissão em fluxo e paginação de conjuntos de resultados extensos, consulte Resolver problemas de consultas, dados e operações.
Questões de transação
Âmbito da tabela temporária com autocommit
Para obter informações sobre tabelas temporárias que desaparecem após o rollback e instruções DDL que exigem autocommit, veja Resolver problemas de consultas, dados e operações.
Transação não comprometida
Para alterações de dados que não persistem após o encerramento da ligação, veja Resolução de problemas de consulta, dados e operações.
Erros de bloqueio
Para SQLSTATE 40001, orientações sobre novas tentativas e análise de deadlocks recorrentes, consulte Resolver problemas de consultas, dados e operações.
Problemas de carregamento em massa
Violação de restrições durante a cópia em massa
Em caso de violações de chave primária, de exclusividade, de verificação ou de chave estrangeira durante a cópia em massa, consulte Resolução de problemas de consultas, dados e operações.
Erros de mapeamento de colunas
Para incompatibilidades no número de colunas e na ordem das colunas na cópia em massa, consulte Resolver problemas de consultas, dados e operações.
Desajustes de tipo durante a cópia em massa
Para valores truncados, arredondados ou incorretos após cópia em massa, veja Resolução de problemas de consulta, dados e operações.
Falhas de ligação do tipo NumPy
Para falhas na associação de parâmetros com tipos inteiros ou de vírgula flutuante do NumPy, veja Resolver problemas de consulta, dados e operações.
Cópia em massa com tabelas temporárias
Relativamente aos erros Invalid object name ao utilizar bulkcopy() com uma tabela temporária de sessão, consulte Resolução de problemas de consulta, dados e operação.
Questões de contentores e CI
Bibliotecas de sistema em falta no Linux
Para a falta de libltdl ou de bibliotecas Kerberos em ambientes Linux, consulte Resolver problemas de instalação e ligação.
Erros SSL do macOS após a instalação
Para erros relacionados com SSL no macOS, incluindo o Apple Silicon, consulte Resolução de problemas de instalação e ligação.
Ferramentas de diagnóstico
Ativar o registo do controlador
Use mssql_python.setup_logging() para ativar o registo DEBUG. O driver regista instruções SQL, parâmetros, operações ODBC internas e alterações no estado da ligação.
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")
Os ficheiros de registo utilizam o formato CSV e são rodados automaticamente ao atingirem 512 MB, com cinco cópias de segurança. O driver remove dados sensíveis, como palavras-passe e tokens de acesso, dos registos.
Para adicionar entradas de aplicação ao registo do driver, utilize 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")
Atenção
O registo tem um impacto no desempenho. Ative-o apenas quando estiver a resolver um problema. Não o ativem em produção por defeito.
Obtenha informações sobre o condutor
Recupere a versão do driver e os dados do servidor de uma ligação ativa:
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)}")
Verificar o estado da ligação
Execute uma consulta leve para testar se uma ligação ainda está aberta:
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")
Referência rápida: Erros comuns
| Erro | SQLSTATE | Causa comum | Resolução de problemas |
|---|---|---|---|
| Cliente incapaz de estabelecer ligação | 08001 |
Servidor inacessível | Impossível ligar-se ao servidor |
| Início de sessão falhado | 28000 |
Credenciais incorretas | Início de sessão falhado |
| O tempo limite expirou |
HYT00 ou HYT01 |
Rede lenta | Limite de tempo da ligação |
| Nome do objeto inválido | 42S02 |
Tabela ou esquema incorreto | Tabela ou objeto não encontrado |
| Erro de sintaxe | 42000 |
Erro SQL | Erro de sintaxe |
| Violação de restrições | 23000 |
Violação de chave estrangeira ou chave primária | Violações de restrições durante a cópia em massa |
| Impasse | 40001 |
Contenção de bloqueio | Erros de bloqueio |