Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz 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.
Weryfikowanie sterownika lub dostawcy OLE DB za pomocą programu PowerShell
Aby sprawdzić, czy w systemie operacyjnym zainstalowano najnowszy sterownik OLE DB dla programu SQL Server, uruchom następujące polecenie cmdlet programu PowerShell jako administrator.
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
Where-Object { $_.Name -like "*MSOLEDBSQL*" } |
ForEach-Object { Get-ItemProperty $_.PSPath }
Jeśli masz zainstalowaną wersję 18 i 19 w systemie operacyjnym, dane wyjściowe mogą wyglądać mniej więcej tak.
InstalledVersion : 18.7.4.0
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSOLEDBSQL
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName : MSOLEDBSQL
PSProvider : Microsoft.PowerShell.Core\Registry
InstalledVersion : 19.4.1.0
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSOLEDBSQL19
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName : MSOLEDBSQL19
PSProvider : Microsoft.PowerShell.Core\Registry
InstalledVersion : 18.7.4.0
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSOLEDBSQL
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft
PSChildName : MSOLEDBSQL
PSProvider : Microsoft.PowerShell.Core\Registry
InstalledVersion : 19.4.1.0
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSOLEDBSQL19
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft
PSChildName : MSOLEDBSQL19
PSProvider : Microsoft.PowerShell.Core\Registry
Aby sprawdzić instalację interfejsu dostawcy OLE DB (SQLNCLI), uruchom jako administrator następujące polecenie cmdlet programu PowerShell.
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
Where-Object { $_.Name -like "*SQLNCLi*" } |
ForEach-Object { Get-ItemProperty $_.PSPath}
Weryfikowanie sterownika OLE DB za pośrednictwem pliku UDL
Jednym z najprostszych sposobów testowania sterownika 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ę. Kliknij dwukrotnie plik, aby otworzyć okno dialogowe, w którym można wyświetlić zainstalowanych dostawców i przetestować ich połączenia. Aby uzyskać więcej informacji, zobacz Testowanie łączności OLE DB z programem SQL Server przy użyciu pliku UDL.
Wybierz przycisk OK w oknie dialogowym, aby potwierdzić konfigurację.
Sprawdzanie zawartości pliku UDL
Jeśli otworzysz plik UDL w edytorze tekstów, możesz skopiować parametry połączenia do użycia w aplikacji. Oto dwa przykłady:
Provider=MSOLEDBSQL.1;Integrated Security=SSPI;Persist Security Info=False;User ID="";Initial Catalog=master;Data Source=localhost;Initial File Name="";Server SPN="";Authentication="";Access Token=""
Provider=SQLNCLI11.1;Integrated Security="";Persist Security Info=False;User ID=sa;Initial Catalog=AdventureWorks;Data Source=tcp:SQLProd01.contoso.com,1433;Initial File Name="";Server SPN=""
Weryfikowanie sterownika OLE DB
Pierwszym krokiem weryfikacji sterownika jest sprawdzenie, czy nazwa jest wyświetlana na liście zainstalowanych dostawców 64-bitowego lub 32-bitowego okna dialogowego UDL, jak pokazano w poprzedniej sekcji. 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.
Korzystając z przykładowego sterownika klienta natywnego programu SQL Server, można zobaczyć na poniższej ilustracji mapowanie między identyfikatorem ProgID SQLNCLI11.1 i nazwą dostawcy SQL Server Native Client 11.0.
ProgID dostawców zarówno 32-bitowych, jak i 64-bitowych znajduje się pod tym samym kluczem.
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. Możliwe jednak, że wystąpią przypadki, gdzie nie są. W takich przypadkach aplikacje korzystające z nazwy niezależnej od wersji nie mogą się łączyć, ale mogą się połączyć, jeśli używają związanego z wersją identyfikatora ProgID. 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.
Te klucze rejestru to ścieżki do SQL Native Client 11.0 w Edytorze rejestru dla maszyn 64-bitowych:
HKEY_CLASSES_ROOT\SQLNCLI.1\CLSIDHKEY_CLASSES_ROOT\CLSID\<guid>\InProcServer32HKEY_CLASSES_ROOT\Wow6432Node\CLSID\<guid>\InProcServer32
Są to ścieżki w Edytorze rejestru dla maszyn 32-bitowych:
HKEY_CLASSES_ROOT\SQLNCLI.1\CLSIDHKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32
Obsługa dostawców innych niż Microsoft
Pomoc techniczna dla dostawców OLE DB innych niż Microsoft jest ograniczona do weryfikacji, czy ProgID wskazuje prawidłowy identyfikator CLSID oraz czy podklucz InProcServer32 wskazuje właściwy plik 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.