Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Gebruik dit artikel om problemen met installatie, verbinding, container en continue integratie (CI) met de mssql-python driver te diagnosticeren.
Installatieproblemen
pip-installatie mislukt of compileert vanaf broncode
Symptomen:
error: Microsoft Visual C++ 14.0 or greater is required
ERROR: Failed building wheel for mssql-python
Mogelijke oorzaken en oplossingen:
Geen kant-en-klaar wiel voor je platform
- Controleer of je een ondersteunde Python-versie (3.10 en latere versies) en platform draait. Zie Support-levenscyclus voor de compatibiliteitsmatrix.
- Werk pip vóór de installatie bij met
pip install --upgrade pip. - Voor herhaalbare teamomgevingen gebruik je de vergrendelde workflow in herhaalbare implementaties of de containerpatronen in container- en lokale ontwikkeling om lokale machinedrift te verminderen.
Virtuele omgeving niet geactiveerd
- Activeer eerst je virtuele omgeving. Installatie in het systeem Python kan permissiefouten of conflicten veroorzaken.
python -m venv .venv .venv\Scripts\activate pip install mssql-python
-
Ontbrekende Linux-systeembibliotheken
- De driver vereist verschillende systeembibliotheken op Linux. Zie Platform-specifieke afhankelijkheden voor de pakketten die geïnstalleerd moeten worden.
Conflicterende stuurprogramma-installaties
Symptomen:
Je komt importfouten of onverwacht gedrag tegen na de installatie mssql-python en pyodbc in dezelfde omgeving.
Solution:
mssql-python en pyodbc kunnen naast elkaar bestaan. Als je conflicten tegenkomt, creëer dan een schone virtuele omgeving.
python -m venv .venv --clear
.venv\Scripts\activate
pip install mssql-python
Verbindingsproblemen
Kan geen verbinding maken met de server
Symptomen:
OperationalError: [08001] (0) Client unable to establish connection
Mogelijke oorzaken en oplossingen:
Server niet bereikbaar
- Controleer of de servernaam en poort correct zijn.
- Controleer de netwerkconnectiviteit met
ping <server>oftelnet <server> 1433. - Zorg ervoor dat de firewall uitgaande verbindingen op poort 1433 toestaat.
SQL Server draait niet
- Controleer of de SQL Server-service is gestart.
- Controleer voor benoemde instanties of de SQL Server Browser-service draait.
Azure SQL firewall rules
- Voeg je client IP-adres toe aan de Azure SQL firewallregels in het Azure portal.
- Voor Azure SQL Managed Instance moet je ervoor zorgen dat je verbinding maakt vanaf een toegestan netwerk.
Test de eenvoudige TCP-connectiviteit:
import socket
try:
sock = socket.create_connection(("<server>.database.windows.net", 1433), timeout=5)
print("TCP connection successful")
sock.close()
except Exception as e:
print(f"Cannot reach server: {e}")
Aanmelden is mislukt
Symptomen:
OperationalError: [28000] (18456) Login failed for user '<user_id>'.
Mogelijke oorzaken en oplossingen:
Niet-overeenkomende verificatiemodus
- Gebruik voor Azure SQL Database, Azure SQL Managed Instance en SQL database in Fabric bij voorkeur een Microsoft Entra-modus zoals
Authentication=ActiveDirectoryDefault. - Als je opzettelijk SQL-authenticatie gebruikt, controleer dan of de server het toestaat en dat je het juiste inlogformaat voor dat endpoint gebruikt.
- Gebruik voor Azure SQL Database, Azure SQL Managed Instance en SQL database in Fabric bij voorkeur een Microsoft Entra-modus zoals
Onjuiste SQL-authenticatiegegevens
- Controleer het gebruikers-ID en wachtwoord.
- Voor Azure SQL, voeg de volledige gebruikers-ID toe:
<user_id>@<server>.
Gebruiker bestaat niet in de database
- Controleer of de gebruiker toegang heeft tot de opgegeven database.
- Controleer of het aanmelden is gekoppeld aan een databasegebruiker.
Authenticatie niet geconfigureerd
- Gebruik Microsoft Entra-authenticatie (aanbevolen):
Authentication=ActiveDirectoryDefault. - Als je een lokale SQL Server-instantie oplost die SQL-authenticatie zou moeten accepteren, controleer dan of SQL Server gemixte modus authenticatie gebruikt.
- Gebruik Microsoft Entra-authenticatie (aanbevolen):
Verbindingstijdoverschrijding
Symptomen:
OperationalError: [HYT00] (0) Timeout expired
OperationalError: [HYT01] (0) Connection timeout expired
Mogelijke oorzaken en oplossingen:
De server reageert traag
- Verhoog de verbindingstimeout.
conn = mssql_python.connect(connection_string, timeout=60)Netwerklatentie
- Controleer het netwerkpad naar de server.
- Overweeg een korter netwerkpad of een virtueel privénetwerk (VPN).
Server onder zware belasting
- Probeer contact te maken tijdens de laagste uren.
- Neem contact op met je databasebeheerder.
SSL-certificaatfouten
Symptomen:
OperationalError: [08001] SSL Provider: The certificate chain was issued by an authority that is not trusted
Oplossingen:
Geef de voorkeur aan een vertrouwd certificaat of de lokale ontwikkelingspatronen in Container en lokale ontwikkeling. Gebruik TrustServerCertificate=yes alleen voor lokale ontwikkeling tegen een server die jij beheert.
Voor ontwikkeling en testen met een zelfondertekend certificaat:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"TrustServerCertificate=yes;" # Don't use in production
)
Caution
TrustServerCertificate=yes is uitsluitend een lokale terugvaloptie. Neem het niet op in gedeelde ontwikkelcontainers, CI-pijplijnen of productie-implementaties. Voor meer informatie, zie Versleuteling en certificaten.
Voor productie installeer je de juiste certificaten en gebruik:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"HostnameInCertificate=<server>.domain.com;"
)
Container- en CI-problemen
Ontbrekende systeembibliotheken op Linux
Symptomen:
ImportError: libltdl.so.7: cannot open shared object file: No such file or directory
ImportError: libkrb5.so.3: cannot open shared object file
Solution:
Installeer de benodigde systeempakketten voor je distributie:
| Distribution | Opdracht Installeren |
|---|---|
| Ubuntu of Debian | sudo apt-get install libltdl7 libkrb5-3 libgssapi-krb5-2 |
| Red Hat of Fedora | sudo dnf install libtool-ltdl krb5-libs |
| Alpine | apk add libltdl krb5-libs |
Voor voorbeelden van Dockerfile, zie Container en lokale ontwikkeling.
macOS SSL-fouten na installatie
Symptomen:
Je komt SSL-gerelateerde fouten tegen wanneer je verbinding maakt vanaf macOS, vooral op Apple Silicon.
Solution:
Installeer OpenSSL met Homebrew en stel de linkervlaggen in:
brew install openssl
export LDFLAGS="-L/opt/homebrew/opt/openssl/lib"
export CPPFLAGS="-I/opt/homebrew/opt/openssl/include"