Проверка установки драйвера OLE DB

Связывание объектов и внедрение базы данных (OLE DB) — это технология доступа к данным Майкрософт, используемая для подключения приложений к различным источникам данных с помощью поставщиков OLE DB. Устранение неполадок при установке и проверке драйверов OLE DB может быть сложным, но имеет решающее значение для простого взаимодействия с базой данных. Это руководство по устранению неполадок предназначено для предоставления аналитических сведений об установке, проверке и устранении проблем, связанных с драйверами OLE DB.

Проверка драйвера ИЛИ поставщика OLE DB с помощью PowerShell

Чтобы проверить, установлен ли последний драйвер OLE DB для SQL Server в операционной системе, выполните следующий командлет PowerShell от имени администратора.

Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
    Where-Object { $_.Name -like "*MSOLEDBSQL*" } |
    ForEach-Object { Get-ItemProperty $_.PSPath }

Если в операционной системе установлена версия 18 и 19, выходные данные могут выглядеть примерно так.

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

Чтобы проверить установку интерфейса поставщика OLE DB (SQLNCLI), выполните следующий командлет PowerShell от имени администратора.

Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
   Where-Object { $_.Name -like "*SQLNCLi*" } |
   ForEach-Object {   Get-ItemProperty $_.PSPath}

Проверка драйвера OLE DB с помощью UDL-файла

Одним из самых простых способов тестирования драйвера OLE DB является использование универсального файла канала данных (UDL). Создайте любой текстовый файл в проводнике Windows и переименуйте его, чтобы он имел расширение файла .udl. Убедитесь, что у вас включены расширения файлов, чтобы внести изменения. Дважды щелкните файл, чтобы открыть диалоговое окно, в котором можно увидеть установленных поставщиков и проверить их подключения. Дополнительные сведения см. в статье Проверка подключения OLE DB к SQL Server с помощью UDL-файла.

Снимок экрана: использование UDL-файла для тестирования поставщика OLE DB.

Нажмите кнопку "ОК " в диалоговом окне, чтобы подтвердить конфигурацию.

Проверка содержимого файла UDL

Если открыть UDL-файл в текстовом редакторе, можно скопировать строку подключения для использования в приложении. Вот два примера:

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

Проверка драйвера OLE DB

Первым шагом проверки драйвера является проверка того, отображается ли имя в списке установленных поставщиков 64-разрядного или 32-разрядного диалогового окна UDL, как показано в предыдущем разделе. Если это не так, необходимо переустановить поставщика или обратиться к поставщику.

Вы также можете отслеживать расположение драйвера в реестре. Имя драйвера — com ProgID , и его можно найти в HKEY_CLASSES_ROOT.

С помощью драйвера собственного клиента SQL Server в качестве примера можно увидеть на следующем рисунке сопоставление между ProgID SQLNCLI11.1 и именем поставщика SQL Server Native Client 11.0.

Снимок экрана: сопоставление между progID SQLNCLI11.1 и именем поставщика SQL Server Native Client 11.0.

Идентификаторы ProgID 32-разрядных и 64-разрядных поставщиков отображаются под одним ключом.

Помимо SQLNCLI11.1, есть также ProgID с именем SQLNCLI11. Причиной этого является то, что разработчик поставщика может разрешить установку нескольких версий одного поставщика параллельно, каждый из которых имеет разные числовые суффиксы. Ненумерованное имя — это идентификатор ProgID, не зависящий от версии. Приложения могут указывать на это и перенаправляться на последнюю версию поставщика.

Для всех намерений и целей эти два разных имена ProgID должны быть эквивалентны. Однако могут возникнуть случаи, когда это не так. В таких случаях приложения, использующие имя, не зависящее от версии, не могут подключаться, но могут подключаться, если используется версионное имя ProgID. Причина заключается в том, что две записи указывают на разные значения CLSID , то есть как найти библиотеку DLL поставщика.

Снимок экрана: поиск библиотеки dll поставщика с помощью версии ProgId.

Это CLSID COM-GUID. Инфраструктура COM находит GUID из ProgID. Затем он выглядит под ключом HKEY_CLASSES_ROOT\CLSID для ключа, GUID которого соответствует имени ключа:

Снимок экрана: поиск GUID из ProgId в разделе HKEY_CLASSES_ROOT\CLSID.

Значение InProcServer32 указывает на библиотеку DLL поставщика.

Для 32-разрядных поставщиков COM использует тот же GUID, но ищет его в HKEY_CLASSES_ROOT\Wow6432Node\CLSIDразделе.

Снимок экрана: поставщик находится в папке SysWow64.

В этом случае поставщик находится в папке SysWow64 .

Примечание.

Эти примеры относятся к 64-разрядным компьютерам. На 32-разрядных компьютерах нет Wow6432Node в реестре.

Эти ключи реестра являются путями к SQL Native Client 11.0 в редакторе реестра для 64-разрядных компьютеров.

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

Это пути в редакторе реестра для 32-разрядных компьютеров:

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

Поддержка поставщиков, отличных от Майкрософт

Техническая поддержка поставщиков OLE DB, отличных от Майкрософт, ограничена проверкой того, что ProgID указывает на допустимый CLSID, и проверкой того, что подраздел InProcServer32 указывает на правильную библиотеку DLL. Если путь неверный или запись реестра не существует, переустановите поставщика или обратитесь к поставщику. Если файлы существуют, но записи реестра отсутствуют, можно вручную зарегистрировать поставщика с помощью REGSVR32. Чтобы зарегистрировать COM-библиотеку DLL, выполните следующую команду в командной строке с повышенными привилегиями:

Regsvr32 sqlncli11

Снимок экрана: команда администратора для регистрации БИБЛИОТЕКИ COM.

Если есть 32-разрядные и 64-разрядные версии поставщика, выполните команду в обоих библиотеках DLL. Используйте 32-разрядную командную строку для регистрации 32-разрядной библиотеки DLL.

Дополнительная информация