Udostępnij za pośrednictwem


Sprawdzanie instalacji sterownika OLE DB

Object Linking and Embedding Database (OLE DB) to technologia dostępu do danych firmy Microsoft używana do łączenia aplikacji z różnymi źródłami danych przy użyciu dostawców OLE DB. Rozwiązywanie problemów z instalacjami sterowników OLE DB i walidacjami może być złożone, ale ma kluczowe znaczenie dla bezproblemowej interakcji z bazą danych. Ten przewodnik rozwiązywania problemów ma na celu zapewnienie szczegółowych informacji na temat instalacji, walidacji i rozwiązywania problemów związanych z sterownikami OLE DB.

Informacje o plikach UDL

Jednym z najprostszych sposobów testowania dostawcy OLE DB jest użycie pliku universal Data Link (UDL). Utwórz dowolny plik tekstowy w Eksploratorze Windows i zmień jego nazwę na . Rozszerzenie pliku UDL . Upewnij się, że masz włączone rozszerzenia plików, aby wprowadzić zmianę. Aby uzyskać więcej informacji, zobacz Testowanie łączności OLE DB z programem SQL Server przy użyciu pliku UDL

Kliknij dwukrotnie plik, aby otworzyć okno dialogowe, w którym można wyświetlić zainstalowanych dostawców i przetestować ich połączenia.

Zrzut ekranu przedstawia sposób używania pliku UDL do testowania dostawcy OLE DB.

Uwaga 16.

Jeśli wybierzesz przycisk OK w oknie dialogowym, możesz otworzyć plik UDL w Notatniku, aby wyświetlić parametry połączenia, których można użyć w aplikacji. Na przykład:

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

Interfejs użytkownika pliku UDL jest udostępniany przez OLEDB32.DLL i hostowany w RUNDLL32.DLL.

  • W przypadku systemów 32-bitowych lub 64-bitowych w systemach 64-bitowych użyj następującego polecenia:

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

  • W przypadku dostawców 32-bitowych w systemach 64-bitowych użyj następującego polecenia:

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

Element . Rozszerzenie pliku UDL jest mapowane na pierwsze polecenie. W drugim celu można uprościć pracę, uruchamiając 32-bitowy wiersz polecenia, a następnie uruchamiając polecenie START C:\TEMP\TEST.UDL w celu przetestowania dostawców 32-bitowych. Jeszcze prostszą instrukcją jest mapowania elementu . Rozszerzenie pliku UDL32 do 32-bitowego polecenia.

Mapowanie 32-bitowego rozszerzenia pliku udl32

Jeśli często używasz dostawców 32-bitowych, możesz zamapować rozszerzenie pliku .udl32 , aby uruchomić 32-bitowe okno dialogowe UDL. Wykonaj te kroki:

  1. Skopiuj skrypt do Notatnika i zapisz go jako udl32.reg.

    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. Kliknij dwukrotnie plik .reg, a następnie możesz utworzyć plik z rozszerzeniem .udl32. Na przykład test.udl32. Zostanie uruchomione 32-bitowe okno dialogowe UDL. Na przykład:

    Zrzut ekranu przedstawia przykład 32-bitowego okna dialogowego UDL.

Weryfikowanie dostawcy OLE DB

Pierwszym krokiem weryfikacji dostawcy jest sprawdzenie, czy nazwa jest wyświetlana na liście zainstalowanych dostawców 64-bitowego lub 32-bitowego okna dialogowego UDL, jak pokazano powyżej. Jeśli tak nie jest, musisz ponownie zainstalować dostawcę lub skonsultować się z dostawcą.

Możesz również śledzić lokalizację sterownika w rejestrze. Nazwa sterownika to COM ProgID i można go znaleźć w HKEY_CLASSES_ROOT.

Na poniższej ilustracji widać mapowanie między wartością ProgID SQLNCLI11.1 i nazwą dostawcy SQL Server Native Client 11.0.

Zrzut ekranu przedstawia mapowanie między identyfikatorem ProgID SQLNCLI11.1 i nazwą dostawcy SQL Server Native Client 11.0.

Identyfikator ProgID dostawców 32-bitowych i 64-bitowych jest wyświetlany w tym kluczu.

Oprócz SQLNCLI11.1 istnieje również identyfikator ProgID o nazwie SQLNCLI11. Przyczyną jest to, że deweloper dostawcy może zezwolić na zainstalowanie wielu wersji tego samego dostawcy obok siebie, z których każdy ma inny sufiks liczbowy. Nazwa nienumerowana jest niezależnym od wersji identyfikatorem ProgID. Aplikacje mogą wskazywać tę wersję i przekierowywać do najnowszej wersji dostawcy.

Dla wszystkich intencji i celów te dwie różne nazwy ProgID powinny być równoważne. Jednak było kilka przypadków, w których nie były. Aplikacje korzystające z nazwy niezależnej od wersji nie mogą się łączyć, ale mogą łączyć się, jeśli używasz identyfikatora ProgID wersji. Przyczyną jest to, że dwa wpisy wskazują różne wartości CLSID , czyli sposób znajdowania biblioteki DLL dostawcy.

Zrzut ekranu przedstawia sposób znajdowania biblioteki dll dostawcy przy użyciu identyfikatora ProgId w wersji.

Jest to CLSID identyfikator GUID com. Infrastruktura COM lokalizuje identyfikator GUID z identyfikatora ProgID. Następnie wyszukuje pod kluczem HKEY_CLASSES_ROOT\CLSID klucza, którego identyfikator GUID pasuje do nazwy klucza:

Zrzut ekranu przedstawia sposób lokalizowania identyfikatora GUID z identyfikatora ProgId w obszarze HKEY_CLASSES_ROOT\CLSID.

Wartość InProcServer32 wskazuje bibliotekę DLL dostawcy.

W przypadku dostawców 32-bitowych com używa tego samego identyfikatora GUID, ale szuka go w obszarze HKEY_CLASSES_ROOT\Wow6432Node\CLSID.

Zrzut ekranu przedstawia dostawcę znajdującego się w folderze SysWow64.

W tym przypadku dostawca znajduje się w folderze SysWow64 .

Uwaga 16.

Te przykłady pochodzą z maszyn 64-bitowych. Na maszynach 32-bitowych nie Wow6432Node ma w rejestrze.

Są to ścieżki do klienta SQL Native Client 11.0 w Edytorze rejestru dla maszyn 64-bitowych:

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

Są to ścieżki w Edytorze rejestru dla maszyn 32-bitowych:

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

Obsługa dostawców innych firm

Obsługa dostawców OLE DB innych firm jest ograniczona do sprawdzania poprawności punktów ProgID do prawidłowego identyfikatora CLSID i że InProcServer32 podklucz wskazuje poprawną bibliotekę DLL. Jeśli ścieżka jest niepoprawna lub wpis rejestru nie istnieje, zainstaluj ponownie dostawcę lub skontaktuj się z dostawcą. Jeśli pliki istnieją, ale wpisy rejestru nie, możesz ręcznie zarejestrować dostawcę przy użyciu polecenia REGSVR32. Aby zarejestrować bibliotekę DLL COM, uruchom następujące polecenie w wierszu polecenia z podwyższonym poziomem uprawnień:

Regsvr32 sqlncli11

Zrzut ekranu przedstawia polecenie administratora służące do rejestrowania biblioteki DLL COM.

Jeśli istnieją zarówno wersje 32-bitowe, jak i 64-bitowe dostawcy, uruchom polecenie względem obu bibliotek DLL. Użyj 32-bitowego wiersza polecenia, aby zarejestrować 32-bitową bibliotekę DLL.

Więcej informacji