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 kullanarak bir OLE DB işleminin başarısız aşamasını belirleyin, bir sonraki kontrolü seçin ve ayrıntılı sorun giderme talimatlarını bulunun. Rehber mevcut sağlayıcıyı kullanır, MSOLEDBSQL19. Sürüme özgü kusurlar ve yükseltme değişiklikleri için bkz. Bilinen sorunlar ve Büyük sürüm farklılıkları.
Belirtiyi belirleyin
Ayarları değiştirmeden önce tüm hata açıklamasını ve mevcut tüm hata kayıtlarını kaydedin. Üst HRESULTseviye, örneğin DB_E_ERRORSOCCURRED, nedeni tek başına tanımlamaz. Arızanın sağlayıcıyı yüklerken, bağlantı açarken, komut çalıştırılırken, veri getirirken veya işlem yaparken olup olmadığını kaydedin.
| Belirti | Buradan başlayın |
|---|---|
| Sağlayıcı bulunamıyor ya da sınıf kayıtlı değil. | Sağlayıcı kaydı ve mimarisi |
| Giriş başarısız olur, erişim reddedilir veya entegre kimlik doğrulama başarısız olur. | Giriş ve kimlik doğrulama hataları |
| Sertifika zincirine güvenilmez ya da sertifika adı eşleşmiyor. | TLS sertifikası hataları |
| Sunucu veya örnek bulunamıyor ya da bağlantı reddediliyor. | Ağ ve instans keşif hataları |
| Parametreler geçersiz olur, değerler kırpılır veya veri dönüştürülemez. | Parametre ve veri dönüştürme hataları |
| Bağlantı kesiliyor, kurtarma başarısız oluyor ya da bir zaman aşımı doluyor. | Bağlantı kaybı ve zaman aşımları |
| Hata ayrıntıları eksik ya da destek için bir izleme kaydına ihtiyacınız var. | Tanı ve takip |
Bağlantı arızaları için, uygulamayı Evrensel Veri Bağlantısı (UDL) bağlantı testi ile karşılaştırın. Aynı bilgisayar, sağlayıcı, süreç mimarisi, kimlik doğrulama kimliği, sunucu, veritabanı ve şifreleme ayarlarını kullanın. Farklı bir sağlayıcı veya kimlik ile başarılı bir test, uygulamanın yapılandırmasının çalıştığını kanıtlamaz.
Sağlayıcı kaydı ve mimarisi
Provider gibi hatalar bulunamaz veya REGDB_E_CLASSNOTREG (0x80040154, Class kayıtlı değil) SQL Server doğrulamasından önce sağlayıcının yüklendiğini gösterir.
- Başvurunun talep ettiği sağlayıcıyı kontrol edin.
MSOLEDBSQL19veMSOLEDBSQL, farklı ana sürümleri gösterir. Mevcut sürücünün kurulması, bir uygulamanın sağlayıcı seçimini değiştirmez. Uygulama hâlâ başka bir sağlayıcı talep ediyorsa geçiş adımlarını takip edin. - Uygulamayı barındıran sürecin mimarisini kontrol edin. 32-bit bir uygulama, 64-bit Windows'ta bile 32-bit sağlayıcıya ihtiyaç duyar. Bir hizmet veya zamanlanmış görev için, yalnızca geliştirme ortamınızı değil, o ana bilgisayarın kullandığı yürütülebilir dosyayı ve hesabı da kontrol edin.
- Programı çalıştıran bilgisayardaki desteklenen kurulumcu ile sürücüyü kurun veya tamir edin. x64 yükleyici hem 64 bit hem de 32 bit sürücü ikili dosyalarını içerir. Install the OLE DB Driver ve System Gereksinimleri bölümünde gerekli bağımlılıkları kontrol edin. Kurulumun yerine başka bir bilgisayardan sürücü kütüphanelerini kopyalamayın.
- UDL testini eşleşme mimarisi ve sağlayıcı ile tekrarlayın. Eğer çalışıyorsa ama uygulama hâlâ sağlayıcıyı yükleyemiyorsa, uygulamanın etkili sağlayıcı seçimini ve ana mimarisini testle karşılaştırın.
Hata iletisinde özellikle adal.dll belirtiliyorsa, bunu eksik bir SQL Server sağlayıcısı olarak değerlendirmek yerine bilinen kimlik doğrulama kitaplığı sorununu inceleyin.
Giriş ve kimlik doğrulama hataları
Sunucu giriş reddini, kimlik bilgileri alınamaması veya şifreli bağlantı kurulamaması arasındaki farkı çıkarın. İç içe işlem yapan sağlayıcı hataları dahil olmak üzere tam hata metnini okuyun.
- SQL Server hatası 18456 için, veritabanı yöneticisinden ilgili sunucu hata logu girişini ve durumunu incelemesini isteyin. Kimlik doğrulama modunu, giriş durumunu, talep edilen veritabanını ve veritabanı erişimini MSSQLSERVER_18456 kullanarak kontrol edin. Her giriş reddinin yanlış bir şifre anlamına geldiğini varsaymayın.
- Entegre kimlik doğrulama için, uygulamanın çalıştığı kimliği doğrulayın. Bir hizmet hesabı veya planlanmış görev hesabı, bağlantıyı başarıyla test eden kullanıcıdan farklı olabilir. Mesajda SSPI bağlamı oluşturulamıyor ifadesi yer alıyorsa, Güvenlik Destek Sağlayıcı Arabirimi (SSPI) sorun giderme ve Hizmet Asıl Adı (SPN) desteği başlıklı yönergeleri izleyin.
- Microsoft Entra ID için, seçilen kimlik doğrulama yönteminin uygulamanın çalışma ortamına uyup uymadığını ve kimliğinin hedef veritabanına erişimi olup olmadığını kontrol edin. Yönteme özgü ayarları ve erişim belirteçleri kısıtlamalarını Use Microsoft Entra ID'de inceleyin. Bir erişim belirtecini çakışan kimlik doğrulama veya kimlik bilgisi özellikleriyle birleştirmeyin.
- Etkili ayarları doğru bağlantı dizesi anahtar kelime tablosuyla karşılaştırın.
IDBInitialize::Initialize,IDataInitialize::GetDataSource, ve ActiveX Veri Nesneleri (ADO) farklı anahtar kelime tabloları kullanır. Uygulamanızın kullandığı arayüz için tabloyu kontrol edin.
Metin Hedef ana adın yanlış olması farklı bağlamlarda görünebilir. Buna SSPI bağlamı oluşturulamıyor eşlik ediyorsa, Windows kimlik doğrulamasını ve SPN'leri inceleyin. Hata sertifika veya şifreleme el sıkışmasını tanımlıyorsa, sonraki bölümü kullanın.
TLS sertifikası hataları
Taşıma Katmanı Güvenliği (TLS) hataları, bir giriş SQL Server'a ulaşmadan önce meydana gelebilir. Mevcut sürücü, varsayılan olarak zorunlu şifrelemeyi mümkün kılar, böylece bir yükseltme, eski bağlantı yapılandırmasının tespit etmediği bir sertifika güveni veya isim sorununu ortaya çıkarabilir.
- Sertifika zinciri, güvenilir olmayan bir otorite tarafından verilmiştir diye, SQL Server'ın sunduğu sertifikayı ve istemci bilgisayarın güvendiği veren sertifika zincirini kontrol edin. Geçerli bir sunucu sertifikası yapılandırın ve gerekli güvenilir kök ve ara sertifikaları kuruluşunuzun sertifika yönetim süreciyle kurun.
- Sertifika adı uyumsuzluğu için, uygulamanın kullandığı sunucu veya dinleyici adını sertifikadaki isimlerle karşılaştırın. Amaçlanan bağlantı adını kapsayan bir sertifika kullanın. Uygulama kasıtlı olarak farklı bir bağlantı adı kullanıyorsa, beklenen sertifika adını yapılandırmadan önce belgelenmiş HostNameInCertificate özelliğini gözden geçirin.
-
Kayıt defterleri ayarları dahil olmak üzere etkili şifreleme ve doğrulama ayarlarını kontrol edin. Öncelik ve
Strictdavranış için şifreleme ve sertifika doğrulama tablolarını inceleyin.Strictmodunda sürücü, trust-server-certificate ayarından bağımsız olarak sertifikayı doğrular. - Eğer hata geçiş sırasında başladıysa, şifreleme özelliğinin değer türü ve modu dışında
ServerCertificatekullanımına ilişkin kısıtlama dahil,Strictinceleyin.
Ayrıntılı denetimler için SQL Server için sertifika gereksinimleri ve Sertifika zinciri güvenilir değil sorun giderme başlıklarını kullanın. Üretimde şifreleme ve sertifika doğrulamasını etkin tutun. İkisini devre dışı bırakmak sertifika dağıtım sorununu çözmez.
Ağ ve örnek keşfi hataları
Sunucu bulunamadı, sunucu/örnek tespit hatası veya bağlantı reddedilen hatalar için, uygulamanın ulaşmaya çalıştığı uç noktayı belirleyin.
- Sunucu adı, örnek adı ve yapılandırılmış dinleme portunu veritabanı yöneticisiyle doğrulayın. Veritabanı servisinin çalıştığını ve amaçlanan protokol ile dinleyicinin etkin olduğunu doğrulayın. Her örnek 1433 portunda dinliyor varsaymayın.
- Uzaktan Iletim Kontrol Protokolü (TCP) bağlantısı için, bilinen uç noktayı sürücünün
tcp:<server>,<port>sunucu adı formatını kullanarak test edin. Aynı kimlik doğrulama, veritabanı ve şifreleme ayarlarını koruyun. Arayüzünüz için geçerli olan sunucu anahtar sözcüğü için Bağlantı dizesi anahtar sözcükleri bölümüne bakın. - Eğer belirtilen ana bilgisayar ve port çalışıyor ama adlandırılmış örnek çalışmıyorsa, SQL Server Browser'ı ve örnek bulma mekanizmasını inceleyin. Tarayıcı servisini ve Kullanıcı Datagram Protokolü (UDP) port 1434 yolunu kontrol edin; burada Tarayıcı keşfi kullanılır.
- Eğer açık uç nokta da başarısız olursa, uygulama ana bilgisayarından gerçek dinleme portuna Alan Adı Sistemi (DNS) çözümlemesi, yönlendirme ve güvenlik duvarı erişimini kontrol edin. Ağla ilgili veya örneğe özgü bağlantı hataları bölümünü, aynı anda birden çok bağlantı ayarını değiştirmek yerine izleyin.
Bir erişilebilirlik grubu dinleyicisi olarak, Yüksek erişilebilirlik ve felaket kurtarma desteğini de gözden geçirin. LocalDB için, uzaktan TCP keşif adımları uygulamak yerine yerel örneği ve kullanıcı bağlamını kontrol etmek için LocalDB desteğini kullanın.
Parametre ve veri dönüştürme hataları
Bağlantı kurulursa ancak komut yürütme veya veri alma başarısız oluyorsa, yeniden oluşturmayı soruna yol açan komut ve değere indirgeyin. Hassas veri değiştirilirken orijinal veri türü, uzunluğu, null durumu ve karakter kodlaması korun.
- Her
?parametre belirtecini bağlanma ordinalı, yönü ve meta verileriyle karşılaştırın. KullandığınızdaICommandWithParameters::SetParameterInfo, SQL kaynak tipini komut veya depolanmış prosedürle eşleştirin. Parametre meta verilerinin her zaman otomatik olarak türetildiğini varsaymayın. Türetme kısıtlamaları ve çıktı-parametre davranışı için Komut parametrelerini inceleyin. - Accessor’ların bağlama durumlarını ve her bir döndürülen değerin durumu ile uzunluğunu, yalnızca genel
HRESULT’yi değil, inceleyin. Özellik ayarlama hataları için her özelliğindwStatusöğesini inceleyin. Kısmi başarı iadesi,DB_S_ERRORSOCCURREDhata nesnesi mevcut olmasa bile durum dizisi incelemesi gerektirebilir. Bkz. Dönüş kodları. - Dönüştürme veya kesme için, tüketici tampon tipi ve boyutunu gerçek sütun veya parametre metaverisi ile karşılaştırın. Sayısal değerler için hassasiyet ve ölçeği, tarih/saat değerleri için geçerli aralıkları ve saniye kesirlerini, karakter arabellekleri için bayt uzunluklarını denetleyin.
DBSTATUS_E_CANTCONVERTVALUEöğesini inceleyin veDBSTATUS_S_TRUNCATEDöğesini tam bir değer olarak kabul etmeyin. Geçerli kurallar için Veri tipi eşleme, Satır Getirme ve Tarih ile Zaman dönüşümlerini kullanın. - Eğer bağlı çıkış parametreleri eksik görünüyorlarsa, bunları okumadan önce döndürülen satır kümelerinin tamamını işlemden geçirin. Bkz. Birden çok sonuç kümesini işlemek için IMultipleResults kullanma. Akışla aktarılan çıktı parametreleri için, bir sonraki sonucu istemeden önce bekleyen akışları tüketin veya kapatın; bu konu Çıktı parametreleri için akış desteği bölümünde açıklanmıştır.
ADO'ya özgü eşlemelerle ilgili olarak, OLE DB Sürücüsü ile ADO Kullanma bölümünü ve DataTypeCompatibility içindeki kimlik doğrulama kısıtlamalarını inceleyin. Her ikisini de kontrol etmeden uyumluluk ayarı eklemeyin.
Sürücü yükseltmesinden sonra sql_variant sütunundaki bozulmuş dar dizileri için, depolanmış verileri değiştirmeden önce mevcut SSVARYANT bilinen sorunu ve kurtarma prosedürünü gözden geçirin.
Bağlantı kaybı ve zaman aşımları
Bağlantının en son ne zaman çalıştığını, hangi işlemin başarısız olduğunu ve işlemin ne kadar çalıştığını kaydet. Yeniden deneme veya zaman aşımı ayarlarını değiştirmeden önce bu durumları ayırt edin.
| Başarısız aşama | Kontroller ve detaylı rehberlik |
|---|---|
| Bağlantı açılıyor. | Önce sağlayıcı, ağ, kimlik doğrulama ve TLS hatalarını inceleyin. Etkili DBPROP_INIT_TIMEOUT veya ilgili bağlantı anahtar kelimesini kontrol edin.
Bağlantı zaman aşımı sorun giderimine bakınız. |
| Bir komut çalıştırılıyor. |
DBPROP_COMMANDTIMEOUT veya uygulamanın komut zaman aşımı ayarını kontrol edin.
Sorgu zaman aşımı sorun giderme ile engellenmeleri ve sorgu performansını inceleyin. Bağlantı zaman aşımını artırmak komut zaman aşımını değiştirmez. |
| Boşta bağlantıyı yeniden kullanmak. | Kurtarma koşullarını, yeniden deneme ayarlarını ve Boşta bağlantı dayanıklılığında beklenen hataları kontrol edin. Komut zaman aşımının yeniden bağlantı tamamlanmadan önce süresi dolduğunda kurtarma başarısız olabilir. |
| Uygulama veya commit sırasında bağlantıyı kaybetmek. | İstemci ve sunucu olaylarını ağ kesintisi, sunucu yeniden başlatma veya devre kontrolü için ilişkilendirin. Tekrar denemenin güvenli olup olmadığına karar vermeden önce operasyonun sonucunu belirleyin. |
Boşta bağlantı dayanıklılığı, ilk bağlantı tekrarlarını veya rastgele komutların ve işlemlerin otomatik tekrarını sağlamaz. Onaylanmış geçici bir hata için, gecikmeli sınırlı uygulama denemelerini kullanın ve her denemeyi kayda geçirin. Sağlayıcı yükleme hatalarını, reddedilen kimlik bilgilerini veya sertifika doğrulama hatalarını nedenini düzeltmeden tekrar tekrar denemeyin.
Caution
Bir yazma veya commit sırasında bağlantı kesilirse, istemci SQL Server'ın işlemi yapıp yapmadığını bilemeyebilir. İşlemi körü körüne yeniden yürütmeyin. Sonucunu kontrol edin veya tekrar denemeden önce tekrarlanan etkileri önleyen bir uygulama tasarımı kullanın.
Tanı ve takip
İlgili olmayan sağlayıcı çağrıları hata bilgilerinin yerini almadan önce, hata oluştuğu anda tanılama verilerini toplayın.
- Başarısız olan işlemi, zaman damgasını ve saat dilimini, geçen süreyi ve
HRESULTkaydedin. Yerel OLE DB tüketicileri için, yalnızca ilk açıklamayı değil,IErrorInfoveIErrorRecordsaracılığıyla kullanılabilir tüm kayıtları alın.SQLSTATEöğesini veISQLErrorInfoaracılığıyla kullanılabiliyorsa yerel SQL Server hata numarasını ekleyin. Hata bilgisini almak ve SQL Server hata detayını almak için bkz. ADO için, bağlantınınErrorskoleksiyonunu alın. - Hataları bu şekilde bildiren yöntemler için özellik, bağlama ve değer bazında durumları toplayın. Eksik bir hata nesnesi, kısmi başarı sonucunu göz ardı edilebilecek güvenli bir şey yapmaz.
- İstemci arızasını sunucu hata logu veya Genişletilmiş Olaylar ile ilişkilendirin. Varsa,
ClientConnectionIDveActivityIDkaydedin. Prelogin öncesi bir hata istemci bağlantı tanımlayıcısı olmadan da meydana gelebilir. - Hata kayıtları yeterli değilse, sürücü takibi ve korelasyon kurulumu için Genişletilmiş Olaylar günlüğünden Access diagnostik bilgilerini kullanın. Çoğaltmanın etrafında sınırlı bir iz topla ve sonrasında izlemeyi bırak.
Yükseltme yaparken, sürücü sürümünü, istenen sağlayıcıyı, uygulama ve süreç mimarisini, sunucu sürümünü, kimlik doğrulama yöntemini, etkili bağlantı ayarlarını, arıza aşamasını, hata kayıtlarını ve minimum bir çoğaltmayı ekleyin. Eşleşen UDL testinin başarılı olup olmadığını ve sorunun bir konak mı yoksa birden fazla konakçını mı etkilediğini belirtin.
Bağlantı ayarlarından ve kayıtlardan şifreleri, erişim tokenlarını ve diğer sırları kaldırın. Sorgu metni ve hassas veriler için izleri inceleyin, bunları kısıtlı erişimle saklayın ve yalnızca onaylı bir destek kanalı aracılığıyla paylaşın.