Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makaleyi sürücüyle ilgili kurulum, bağlantı, konteyner ve sürekli entegrasyon (CI) sorunlarını mssql-python teşhis etmek için kullanın.
Kurulum sorunları
pip kurulumu başarısız olur veya kaynaktan derlenir
Belirti -leri:
error: Microsoft Visual C++ 14.0 or greater is required
ERROR: Failed building wheel for mssql-python
Olası nedenler ve çözümler:
Platformunuz için önceden yapılmış bir tekerlek yok
- Desteklenen bir Python sürümü (3.10 ve daha sonraki sürümler) ve platform çalıştırdığınızdan emin olun. Uyumluluk matrisi için Destek Yaşam Döngüsü bölümüne bakın.
- Kurulumdan önce pip’i
pip install --upgrade pipile yükseltin. - Tekrarlanabilir ekip ortamları için, Tekrarlanabilir dağıtımlarda kilitli iş akışını veya Container ve yerel geliştirmedeki konteyner desenlerini kullanarak yerel makine kaymasını azaltabilirsiniz.
Sanal ortam etkinleştirilmedi
- Önce sanal ortamınızı etkinleştirin. Sistem Python'a kurulum izin hatalarına veya çakışmalara yol açabilir.
python -m venv .venv .venv\Scripts\activate pip install mssql-python
-
Eksik Linux sistem kütüphaneleri
- Sürücü, Linux'ta birkaç sistem kütüphanesi gerektirir. Paketlerin kurulması için Platforma özgü bağımlılıklar sayfasına bakınız.
Çelişkili sürücü kurulumları
Belirti -leri:
mssql-python ve pyodbc’i aynı ortama kurduktan sonra içe aktarma hatalarıyla veya beklenmedik davranışlarla karşılaşıyorsunuz.
Çözüm:
mssql-python ve pyodbc bir arada var olabilir. Çatışmalarla karşılaşırsanız, temiz bir sanal ortam oluşturun.
python -m venv .venv --clear
.venv\Scripts\activate
pip install mssql-python
Bağlantı sorunları
Sunucuya bağlanamıyor
Belirti -leri:
OperationalError: [08001] (0) Client unable to establish connection
Olası nedenler ve çözümler:
Sunucuya ulaşılamaz
- Sunucu adı ve portun doğru olduğundan emin olun.
- Ağ bağlantısını
ping <server>veyatelnet <server> 1433ile kontrol edin. - Güvenlik duvarının 1433 portunda çıkış bağlantılarına izin verdiğinden emin olun.
SQL Server çalışmıyor
- SQL Server servisinin açıldığını doğrulayın.
- İsimlendirilmiş örnekler için, SQL Server Browser servisinin çalıştığını doğrulayın.
Azure SQL firewall rules
- Azure portalındaki Azure SQL güvenlik duvarı kurallarına istemci IP adresinizi ekleyin.
- Azure SQL Yönetilen Örneği için, izin verilen bir ağdan bağlandığınızdan emin olun.
Temel TCP bağlantısını test edin:
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}")
Oturum açılamadı
Belirti -leri:
OperationalError: [28000] (18456) Login failed for user '<user_id>'.
Olası nedenler ve çözümler:
Kimlik doğrulama modu uyumsuzluğu
- Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Fabric'teki SQL veritabanı için
Authentication=ActiveDirectoryDefaultgibi bir Microsoft Entra modunu tercih edin. - SQL doğrulama amaçlı kullanıyorsanız, sunucunun buna izin verdiğini ve o uç nokta için doğru giriş formatını kullandığınızı kontrol edin.
- Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Fabric'teki SQL veritabanı için
Yanlış SQL kimlik doğrulama bilgileri
- Kullanıcı kimliğini ve şifreyi doğrulayın.
- Azure SQL için, tam kullanıcı kimliğini ekleyin:
<user_id>@<server>.
Kullanıcı veritabanında yok
- Kullanıcının belirtilen veritabanına erişimi olup olmadığını doğrulayın.
- Giriş işleminin bir veritabanı kullanıcısına eşlenip eşlenmediğini kontrol edin.
Kimlik doğrulama yapılandırılmadı
- Microsoft Entra kimlik doğrulamasını kullanın (önerilir):
Authentication=ActiveDirectoryDefault. - SQL kimlik doğrulamasını kabul etmesi gereken yerel bir SQL Server örneğinde sorun gideriyorsanız, SQL Server'ın karma mod kimlik doğrulaması kullandığını doğrulayın.
- Microsoft Entra kimlik doğrulamasını kullanın (önerilir):
Bağlantı zaman aşımına uğradı
Belirti -leri:
OperationalError: [HYT00] (0) Timeout expired
OperationalError: [HYT01] (0) Connection timeout expired
Olası nedenler ve çözümler:
Sunucu yavaş yanıt veriyor
- Bağlantı süresini artırın.
conn = mssql_python.connect(connection_string, timeout=60)Ağ gecikme süresi
- Sunucuya giden ağ yolunu kontrol edin.
- Daha kısa bir ağ yolu veya sanal özel ağ (VPN) düşünün.
Sunucu ağır yük altında
- Yoğun olmayan saatlerde bağlantı kurmaya çalışın.
- Veritabanı yöneticinizle iletişime geçin.
SSL sertifikası hataları
Belirti -leri:
OperationalError: [08001] SSL Provider: The certificate chain was issued by an authority that is not trusted
Çözümler:
Güvenilir bir sertifikayı veya Container ile yerel geliştirme kalıplarını tercih edin. Sadece kontrol ettiğiniz bir sunucuya karşı yerel geliştirme için kullanın TrustServerCertificate=yes .
Kendi imzalı sertifika ile geliştirme ve test için:
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 sadece yerel bir yedek yöntemdir. Bunu paylaşılan geliştirme konteynerlerine, CI boru hatlarına veya üretim dağıtımlarına taşımayın. Daha fazla bilgi için Şifreleme ve sertifikalar bölümünü inceleyin.
Üretim için uygun sertifikaları kurun ve şunları kullanın:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
"HostnameInCertificate=<server>.domain.com;"
)
Konteyner ve CI sorunları
Linux'ta eksik sistem kütüphaneleri
Belirti -leri:
ImportError: libltdl.so.7: cannot open shared object file: No such file or directory
ImportError: libkrb5.so.3: cannot open shared object file
Çözüm:
Dağıtımınız için gerekli sistem paketlerini kurun:
| Distribution | Yükle komutu |
|---|---|
| Ubuntu veya Debian | sudo apt-get install libltdl7 libkrb5-3 libgssapi-krb5-2 |
| Red Hat veya Fedora | sudo dnf install libtool-ltdl krb5-libs |
| Alpine | apk add libltdl krb5-libs |
Dockerfile örnekleri için bkz. Konteyner ve yerel geliştirme.
Kurulumdan sonra macOS SSL hataları
Belirti -leri:
macOS'tan bağlanırken özellikle Apple silikonunda SSL ile ilgili hatalarla karşılaşıyorsunuz.
Çözüm:
Homebrew ile OpenSSL kur ve linker bayraklarını ayarla:
brew install openssl
export LDFLAGS="-L/opt/homebrew/opt/openssl/lib"
export CPPFLAGS="-I/opt/homebrew/opt/openssl/include"