Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Связывание объектов и внедрение базы данных (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
Если открыть 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 32-разрядных и 64-разрядных поставщиков отображаются под одним ключом.
Помимо SQLNCLI11.1, есть также ProgID с именем SQLNCLI11. Причиной этого является то, что разработчик поставщика может разрешить установку нескольких версий одного поставщика параллельно, каждый из которых имеет разные числовые суффиксы. Ненумерованное имя — это идентификатор ProgID, не зависящий от версии. Приложения могут указывать на это и перенаправляться на последнюю версию поставщика.
Для всех намерений и целей эти два разных имена ProgID должны быть эквивалентны. Однако могут возникнуть случаи, когда это не так. В таких случаях приложения, использующие имя, не зависящее от версии, не могут подключаться, но могут подключаться, если используется версионное имя ProgID. Причина заключается в том, что две записи указывают на разные значения CLSID , то есть как найти библиотеку DLL поставщика.
Это CLSID COM-GUID. Инфраструктура COM находит GUID из ProgID. Затем он выглядит под ключом HKEY_CLASSES_ROOT\CLSID для ключа, GUID которого соответствует имени ключа:
Значение InProcServer32 указывает на библиотеку DLL поставщика.
Для 32-разрядных поставщиков COM использует тот же GUID, но ищет его в HKEY_CLASSES_ROOT\Wow6432Node\CLSIDразделе.
В этом случае поставщик находится в папке SysWow64 .
Примечание.
Эти примеры относятся к 64-разрядным компьютерам. На 32-разрядных компьютерах нет Wow6432Node в реестре.
Эти ключи реестра являются путями к SQL Native Client 11.0 в редакторе реестра для 64-разрядных компьютеров.
HKEY_CLASSES_ROOT\SQLNCLI.1\CLSIDHKEY_CLASSES_ROOT\CLSID\<guid>\InProcServer32HKEY_CLASSES_ROOT\Wow6432Node\CLSID\<guid>\InProcServer32
Это пути в редакторе реестра для 32-разрядных компьютеров:
HKEY_CLASSES_ROOT\SQLNCLI.1\CLSIDHKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32
Поддержка поставщиков, отличных от Майкрософт
Техническая поддержка поставщиков OLE DB, отличных от Майкрософт, ограничена проверкой того, что ProgID указывает на допустимый CLSID, и проверкой того, что подраздел InProcServer32 указывает на правильную библиотеку DLL. Если путь неверный или запись реестра не существует, переустановите поставщика или обратитесь к поставщику. Если файлы существуют, но записи реестра отсутствуют, можно вручную зарегистрировать поставщика с помощью REGSVR32. Чтобы зарегистрировать COM-библиотеку DLL, выполните следующую команду в командной строке с повышенными привилегиями:
Regsvr32 sqlncli11
Если есть 32-разрядные и 64-разрядные версии поставщика, выполните команду в обоих библиотеках DLL. Используйте 32-разрядную командную строку для регистрации 32-разрядной библиотеки DLL.