Aracılığıyla paylaş


OLE DB sürücü yükleme denetimi

Nesne Bağlama ve Ekleme Veritabanı (OLE DB), OLE DB sağlayıcılarını kullanarak uygulamaları çeşitli veri kaynaklarına bağlamak için kullanılan bir Microsoft veri erişim teknolojisidir. OLE DB sürücü yüklemelerinde ve doğrulamalarında sorun giderme karmaşık olabilir, ancak sorunsuz veritabanı etkileşimi için çok önemlidir. Bu sorun giderme kılavuzu, OLE DB sürücüleriyle ilgili sorunların yüklenmesi, doğrulanması ve çözümü hakkında içgörüler sağlamayı amaçlar.

UDL dosyaları hakkında

OLE DB sağlayıcısını test etmenin en basit yollarından biri Evrensel Veri Bağlantısı (UDL) dosyasıdır. Windows Gezgini'nde herhangi bir metin dosyası oluşturun ve dosyaya sahip olacak şekilde yeniden adlandırın. UDL dosya uzantısı. Değişikliği yapmak için dosya uzantılarının açık olduğundan emin olun. Daha fazla bilgi için bkz . UDL dosyası kullanarak SQL Server'a OLE DB bağlantısını test etme

Yüklü sağlayıcıları görebileceğiniz ve bağlantılarını test ettiğiniz bir iletişim kutusu açmak için dosyaya çift tıklayın.

OLE DB sağlayıcısını test etmek için UDL dosyasının nasıl kullanılacağını gösteren ekran görüntüsü.

Not

İletişim kutusunda Tamam'ı seçerseniz, uygulamanızda kullanabileceğiniz bağlantı dizesi görmek için UDL dosyasını Not Defteri'nde açabilirsiniz. Örneğin:

Provider=SQLNCLI11.1;Integrated Security="";Persist Security Info=False;User ID=sa;Initial Catalog=northwind;Data Source=tcp:SQLProd01.contoso.com,1433;Initial File Name="";Server SPN=""

UDL dosya kullanıcı arabirimi OLEDB32.DLL tarafından sağlanır ve RUNDLL32.DLL'de barındırılır.

  • 32 bit sistemler veya 64 bit sistemlerdeki 64 bit sağlayıcılar için aşağıdaki komutu kullanın:

    Rundll32.exe "C:\Program Files\Common Files\System\OLE DB\oledb32.dll",OpenDSLFile C:\test.udl

  • 64 bit sistemlerdeki 32 bit sağlayıcılar için aşağıdaki komutu kullanın:

    C:\Windows\SysWOW64\Rundll32.exe C:\PROGRA~2\COMMON~1\System\OLEDB~1\oledb32.dll,OpenDSLFile C:\test.udl32

. UDL dosya uzantısı ilk komutla eşlenir. İkinci olarak, 32 bit komut istemi çalıştırıp 32 bit sağlayıcıları test etmek için komutunu çalıştırarak START C:\TEMP\TEST.UDL işleri basitleştirebilirsiniz. Daha da basit olan eşlemektir . 32 bit komutuna UDL32 dosya uzantısı.

32 bit .udl32 dosya uzantısı eşlemesi

Sık sık 32 bit sağlayıcılar kullanıyorsanız, .udl32 dosya uzantısını eşleyebilir ve 32 bit UDL iletişim kutusunu başlatabilirsiniz. Şu adımları izleyin:

  1. Betiği Not Defteri'ne kopyalayın ve udl32.reg olarak kaydedin.

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\.UDL32]
    @="ft000001"
    
    [HKEY_CLASSES_ROOT\ft000001]
    @="Microsoft Data Link 32"
    "BrowserFlags"=dword:00000008
    "EditFlags"=dword:00000000
    
    [HKEY_CLASSES_ROOT\ft000001\shell]
    @="open"
    
    [HKEY_CLASSES_ROOT\ft000001\shell\open]
    
    [HKEY_CLASSES_ROOT\ft000001\shell\open\command]
    @="C:\\Windows\\SysWOW64\\Rundll32.exe C:\\PROGRA~2\\COMMON~1\\System\\OLEDB~1\\oledb32.dll,OpenDSLFile %1"
    
    [HKEY_CLASSES_ROOT\ft000001\shell\open\ddeexec]
    
  2. .reg dosyasına çift tıklayın ve .udl32 dosya uzantısına sahip bir dosya oluşturabilirsiniz. Örneğin, test.udl32. 32 bit UDL iletişim kutusunu başlatır. Örneğin:

    Ekran görüntüsü, 32 bit UDL iletişim kutusu örneğini gösterir.

OLE DB Sağlayıcısını Doğrulama

Sağlayıcıyı doğrulamanın ilk adımı, adın yukarıda gösterildiği gibi 64 bit veya 32 bit UDL iletişim kutusunun yüklü sağlayıcıları listesinde görünüp görünmediğini görmektir. Aksi takdirde sağlayıcıyı yeniden yüklemeniz veya satıcıya danışmanız gerekir.

Kayıt defterinde sürücü konumunu da izleyebilirsiniz. Sürücü adı bir COM ProgID'dir ve bunu HKEY_CLASSES_ROOT bulabilirsiniz.

Aşağıdaki görüntüde, ProgID SQLNCLI11.1 ile SQL Server Native Client 11.0 sağlayıcı adı arasındaki eşlemeyi görebilirsiniz.

ProgID SQLNCLI11.1 ile SQL Server Native Client 11.0 Sağlayıcı adı arasındaki eşlemeyi gösteren ekran görüntüsü.

Hem 32 bit hem de 64 bit sağlayıcıların ProgID değeri bu anahtarın altında görünür.

SQLNCLI11.1'e ek olarak, SQLNCLI11 adlı bir ProgID de vardır. Bunun nedeni, bir sağlayıcı geliştiricisinin her biri farklı bir sayısal soneki olan aynı sağlayıcının birden çok sürümünün yan yana yüklenmesine izin verebilmesidir. Numaralandırılmamış ad, sürümden bağımsız ProgID'dir. Uygulamalar buna işaret edebilir ve sağlayıcının en son sürümüne yönlendirilebilir.

Tüm amaçlar ve amaçlar için bu iki farklı ProgID adı eşdeğer olmalıdır. Ancak, bunların olmadığı birkaç durum oldu. Sürümden bağımsız adı kullanan uygulamalar bağlanamaz, ancak sürümlenmiş ProgID kullanılıyorsa bağlanabilir. Bunun nedeni, iki girdinin farklı CLSID değerlerine işaret ediyor olmasıdır ve bu da sağlayıcı DLL'sinin nasıl bulunduğunu gösterir.

Sürümlenmiş ProgId'yi kullanarak sağlayıcı dll'sini bulmayı gösteren ekran görüntüsü.

CLSID, COM GUID'dir. COM altyapısı, Guid değerini ProgID'den bulur. Ardından GUID değeri anahtar adıyla eşleşen bir anahtarın anahtarının altına HKEY_CLASSES_ROOT\CLSID bakar:

HKEY_CLASSES_ROOT\CLSID altında ProgId'den GUID'nin nasıl bulunduğu ekran görüntüsü.

Değer sağlayıcı InProcServer32 DLL'sini gösterir.

32 bit sağlayıcılar için COM aynı GUID'yi kullanır ancak altında HKEY_CLASSES_ROOT\Wow6432Node\CLSIDarar.

Sağlayıcının SysWow64 klasöründe bulunduğunu gösteren ekran görüntüsü.

Bu durumda sağlayıcı SysWow64 klasöründe bulunur.

Not

Bu örnekler 64 bit makinelerden alınıyor. 32 bit makinelerde kayıt defterinde yok Wow6432Node .

64 bit makineler için Kayıt Defteri Düzenleyicisi'nde SQL Native Client 11.0'ın yolları şunlardır:

  • HKEY_CLASSES_ROOT\SQLNCLI.1\CLSID
  • HKEY_CLASSES_ROOT\CLSID\<guid>\InProcServer32
  • HKEY_CLASSES_ROOT\Wow6432Node\CLSID\<guid>\InProcServer32

32 bit makineler için Kayıt Defteri Düzenleyicisi'ndeki yollar şunlardır:

  • HKEY_CLASSES_ROOT\SQLNCLI.1\CLSID
  • HKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32

Üçüncü taraf sağlayıcılar için destek

Üçüncü taraf OLE DB sağlayıcıları için destek, ProgID işaretlerini geçerli bir CLSID'ye ve alt anahtarın InProcServer32 doğru DLL'ye işaret ettiğini doğrulamakla sınırlıdır. Yol yanlışsa veya kayıt defteri girişi yoksa sağlayıcıyı yeniden yükleyin veya satıcıya başvurun. Dosyalar varsa ancak kayıt defteri girdileri yoksa sağlayıcıyı kullanarak REGSVR32el ile kaydedebilirsiniz. COM DLL'sini kaydetmek için yükseltilmiş bir komut isteminde aşağıdaki komutu çalıştırın:

Regsvr32 sqlncli11

COM DLL'sini kaydetmek için yönetici komutunu gösteren ekran görüntüsü.

Sağlayıcının hem 32 bit hem de 64 bit sürümleri varsa, komutu her iki DLL'de de çalıştırın. 32 bit DLL'yi kaydetmek için 32 bit komut istemi kullanın.

Daha Fazla Bilgi