Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
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:
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]
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:
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.
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.
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:
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
.
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
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.