mssql-python sorunlarını giderme

Sürücü için mssql-python sorun giderme rehberi bulmak için bu makaleyi kullanabilirsiniz. Sorununuza uyan belirti veya hata mesajıyla başlayın.

Kurulum sorunları

pip kurulumu başarısız olur veya kaynaktan derlenir

Desteklenmeyen Python sürümleri, eksik tekerlekler, aktif olmayan sanal ortamlar ve eksik Linux kütüphaneleri için Sorun Gider kurulum ve bağlantı sorunları bölümünü ziyaret edin.

Çelişkili sürücü kurulumları

mssql-python ve pyodbc birlikte yüklendiğinde içe aktarma hatalarıyla veya beklenmeyen davranışlarla karşılaşırsanız, Yükleme ve bağlantı sorunlarını giderme bölümüne bakın.

Bağlantı sorunları

Sunucuya bağlanamıyor

SQLSTATE08001, ulaşılamayan sunucular, durdurulan hizmetler ve Azure SQL güvenlik duvarı kuralları için bkz. Sorun Giderme kurulum ve bağlantı sorunları.

Oturum açılamadı

SQLSTATE 28000, kimlik doğrulama modunda uyumsuzluklar, geçersiz kimlik bilgileri ve eksik veritabanı kullanıcıları için bkz. Kurulum ve bağlantı sorunlarını çözme.

Bağlantı zaman aşımına uğradı

SQLSTATE HYT00 veya HYT01, ağ gecikmesi, yavaş sunucular ve bağlantı zaman aşımına sahip ayarlar için Kurulum ve bağlantı sorunlarını sorun giderme bölümünü inceleyebilirsiniz.

SSL sertifikası hataları

Güvenilmez sertifika hataları ve güvenli yerel geliştirme seçenekleri için Kurulum ve bağlantı sorunlarını çözme bölümünü inceleyebilirsiniz.

Sorgu yürütme sorunları

Tablo veya nesne bulunamadı

SQLSTATE 42S02, veritabanı bağlamı, şema nitelendirmesi ve tablo varlık kontrolleri için bkz. Sorun giderme sorgu, veri ve işlem sorunları.

Söz dizimi hatası

SQLSTATE 42000, SQL söz dizimi, dize kaçışı ve parametreli sorgular için Sorgu, veri ve işlem sorunlarını giderme bölümüne bakın.

Parametre hataları

SQLSTATE 07001, yer tutucu sayısı ve desteklenen parametre biçimleri için Sorgu, veri ve işlem sorunlarını giderme bölümüne bakın.

Veri tipi sorunları

Tarih saati dönüşüm hataları

SQLSTATE 22007 ve datetime parametresi dönüştürme için Sorgu, veri ve işlem sorunlarını giderme bölümüne bakın.

Ondalık hassasiyet sorunları

Kesilmiş veya yuvarlatılmış ondalık değerler için Sorgu, veri ve işlem sorunlarını giderme bölümüne bakın.

Unicode kodlama sorunları

Bozuk özel karakterler ve Unicode sütun türleri hakkında bilgi için Sorgu, veri ve işlem sorunlarını giderme bölümüne bakın.

Performans sorunları

Yavaş sorgu yürütme

Dizin oluşturma, büyük sonuç kümeleri ve bağlantı havuzu oluşturma için Sorgu, veri ve işlem sorunlarını giderme konusuna bkz.

Büyük sonuçlarda bellek sorunları

Büyük sonuç kümelerinde akış ve sayfalama için Sorgu, veri ve işlem sorunlarını giderme konusuna bakın.

İşlem sorunları

Otomatik commit ile geçici tablo kapsamı

Rollback sonrası kaybolan geçici tablolar ve otomatik commit gerektiren DDL ifadeleri için Sorun Giderme sorgu, veri ve işlem sorunları bölümünü inceleyebilirsiniz.

İşlem yapılmadı

Bağlantı kapandıktan sonra devam etmeyen veri değişiklikleri için Sorun Giderme sorgusu, veri ve işlem sorunları bölümünü inceleyin.

Kilitlenme hataları

SQLSTATE 40001, yeniden deneme yönergeleri ve yinelenen deadlock analizi için Sorgu, veri ve işlem sorunlarını giderme bölümüne bakın.

Toplu yükleme sorunları

Toplu kopide sırasında kısıtlama ihlalleri

Toplu kopyalama sırasında birincil anahtar, benzersiz, denetim veya yabancı anahtar ihlalleri durumunda Sorgu, veri ve işlem sorunlarını giderme konusuna bakın.

Sütun eşleme hataları

Toplu kopyadaki sütun sayısı ve sütun sırası uyuşmazlıkları için Sorgu, veri ve işlem sorunlarını giderme bölümüne bakın.

Toplu kopyalama sırasında tip uyumsuzlukları

Toplu kopyalamadan sonra kesilmiş, yuvarlanmış veya yanlış değerler için Sorgu, veri ve işlem sorunlarını giderme konusuna bakın.

NumPy tip bağlanma hataları

NumPy tamsayı veya kayan noktalı türleriyle parametre bağlama başarısızlıkları için Sorgu, veri ve işlem sorunlarını giderme bölümüne bakın.

Geçici tablolarla toplu kopyalama

Oturum geçici tablosuyla Invalid object name kullandığınızda oluşan bulkcopy() hatalar için Sorgu, veri ve işlem sorunlarını giderme bölümüne bakın.

Konteyner ve CI sorunları

Linux'ta eksik sistem kütüphaneleri

Linux ortamlarında eksik libltdl veya Kerberos kütüphaneleri için Kurulum ve bağlantı sorunlarını sorun giderme bölümünü inceleyin.

Kurulumdan sonra macOS SSL hataları

macOS'taki SSL ile ilgili hatalar için, Apple Silicon dahil, Kurulum ve bağlantı sorunlarını giderme bölümüne bakın.

Tanılama araçları

Sürücü kaydını etkinleştir

DEBUG günlüğünü etkinleştirmek için mssql_python.setup_logging() kullanın. Sürücü, SQL ifadelerini, parametreleri, dahili ODBC işlemlerini ve bağlantı durumu değişikliklerini kaydeder.

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

Log dosyaları CSV formatını kullanır ve beş yedeklemeyle 512 MB'de otomatik olarak döndürülür. Sürücü, günlük çıktısında parolalar ve erişim belirteçleri gibi hassas verileri ayıklar.

Sürücü kaydına uygulama girişleri eklemek için şunları kullanın 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

Loglama performans ek yüküne neden olur. Sadece bir sorun giderdiğinizde etkinleştirin. Bunu üretim ortamında varsayılan olarak etkinleştirmeyin.

Sürücü bilgisini alın

Aktif bir bağlantıdan sürücü sürümünü ve sunucu detaylarını alın:

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

Bağlantı durumunu denetleme

Bağlantının hâlâ açık olup olmadığını test etmek için hafif bir sorgu çalıştırın:

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

Hızlı referans: Yaygın hatalar

Error SQLSTATE Yaygın neden Sorun giderme
İstemci bağlantı kuramıyor 08001 Sunucuya ulaşılamıyor Sunucuya bağlanamıyor
Oturum açılamadı 28000 Yanlış kimlik bilgileri Giriş başarısız oldu
Zaman aşımı süresi doldu HYT00 veya HYT01 Yavaş ağ Bağlantı zaman aşımı
Geçersiz nesne adı 42S02 Yanlış tablo veya şema Tablo veya nesne bulunamadı
Söz dizimi hatası 42000 SQL hatası Sözdizimi hatası
Kısıtlama ihlali 23000 Yabancı anahtar veya birincil anahtar ihlali Toplu kopide sırasında kısıtlama ihlalleri
Kilitlenme 40001 Kilitleme çekişmesi Kilitlenme açmazı hataları