Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сводка
В этой статье показано, как определить, какой драйвер OLE DB или поставщик OLE DB для SQL Server установлен на компьютере с Windows, как убедиться, что он работает, и как проследить его регистрацию в реестре Windows. Используйте эти проверки, когда приложение не может подключиться к SQL Server, и вы подозреваете, что драйвер 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
Значение InstalledVersion показывает точную сборку каждого установленного драйвера. Microsoft OLE DB Driver 19 for SQL Server (MSOLEDBSQL19) устанавливает параллельно с Microsoft OLE DB Driver 18 for SQL Server (MSOLEDBSQL), поэтому ожидается отображение обоих ключей. Чтобы убедиться, что вы используете последнюю выпущенную версию, сравните это значение с текущей общедоступной (GA) сборкой, указанной на странице Скачать Microsoft OLE DB Driver for SQL Server.
Проверка установки собственного клиента SQL Server (SQLNCLI)
Чтобы проверить установку интерфейса поставщика OLE DB (SQLNCLI), выполните следующий командлет PowerShell от имени администратора.
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft", "HKLM:\SOFTWARE\Wow6432Node\Microsoft" |
Where-Object { $_.Name -like "*SQLNCLi*" } |
ForEach-Object { Get-ItemProperty $_.PSPath}
Примечание.
Собственный клиент SQL Server (SNAC, SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не входят в состав SQL Server 2022 (16.x) и более поздних версий, а также SQL Server Management Studio 19 и более поздних версий. Они не рекомендуется использовать для разработки новых приложений. Вместо этого используйте Microsoft OLE DB Driver for SQL Server. В этой статье по-прежнему используется SQLNCLI в примерах, поскольку он всё ещё часто встречается в существующих системах, с которыми вам приходится работать при устранении неполадок.
Проверка драйвера OLE DB с помощью UDL-файла
Одним из самых простых способов тестирования драйвера OLE DB является использование универсального файла канала данных (UDL). Файл UDL открывает диалоговое окно "Свойства канала данных ", в котором перечислены поставщики OLE DB, зарегистрированные на компьютере, и позволяют проверить подключение без полного приложения.
Чтобы создать и открыть UDL-файл, выполните следующие действия.
- Убедитесь, что в проводнике включено расширение файлов , чтобы можно было изменить расширение.
- Создайте любой текстовый файл в Проводнике, а затем переименуйте его, задав расширение .udl. Выберите "Да", когда Windows предупреждает об изменении расширения имени файла.
- Дважды щелкните файл, чтобы открыть диалоговое окно "Свойства канала данных ", где можно увидеть установленных поставщиков и проверить их подключения.
- Нажмите кнопку "ОК " в диалоговом окне, чтобы подтвердить конфигурацию.
Tip
Если дважды щелкнуть файл не открывает диалоговое окно "Свойства канала данных " (например, файл открывается в текстовом редакторе или возвращает ошибку), попробуйте выполнить одно из следующих вариантов:
Щелкните правой кнопкой мыши UDL-файл и выберите "Свойства". В большинстве систем это действие также открывает диалоговое окно "Свойства канала данных ".
Откройте диалоговое окно непосредственно, выполнив следующую команду, где C:\temp\test.udl — это путь к файлу:
Rundll32.exe "C:\Program Files\Common Files\System\OLE DB\oledb32.dll",OpenDSLFile C:\temp\test.udl
Чтобы открыть 32-разрядное диалоговое окно в 64-разрядной операционной системе, см. раздел "Запуск 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 в реестре Windows
Чтобы проверить драйвер, сначала проверьте, отображается ли имя в списке установленных поставщиков в 64-разрядном или 32-разрядном диалоговом окне UDL, как показано в предыдущем разделе. Если это не так, переустановите поставщика или обратитесь к поставщику.
Если поставщик указан, но подключение по-прежнему не удается, проследите путь к драйверу в реестре. Имя драйвера — com ProgID. Его можно найти в HKEY_CLASSES_ROOT.
Сопоставление ProgID с именем поставщика
С помощью драйвера собственного клиента SQL Server в качестве примера показано сопоставление между ProgID SQLNCLI11.1 и именем поставщика SQL Server Native Client 11.0.
Идентификаторы ProgID 32-разрядных и 64-разрядных поставщиков отображаются под одним ключом.
Помимо SQLNCLI11.1, есть также ProgID с именем SQLNCLI11. Причиной этого является то, что разработчик поставщика может разрешить установку нескольких версий одного поставщика параллельно, каждый из которых имеет разные числовые суффиксы. Ненумерованное имя — это идентификатор ProgID, не зависящий от версии. Приложения могут указывать на это и перенаправляться на последнюю версию поставщика.
Для всех намерений и целей эти два разных имена ProgID должны быть эквивалентны. Однако могут быть случаи, когда это не так. В таких случаях приложения, использующие имя, не зависящее от версии, не могут подключаться, но могут подключаться, если используется версионное имя ProgID. Причина в том, что две записи указывают на разные значения CLSID, по которым можно найти DLL поставщика.
Найти DLL поставщика по CLSID
CLSID — это GUID COM. Инфраструктура COM находит GUID из ProgID. Затем он ищет в разделе HKEY_CLASSES_ROOT\CLSID ключ, GUID которого совпадает с именем ключа:
Значение InProcServer32 указывает на библиотеку DLL поставщика.
Для 32-разрядных поставщиков COM использует тот же GUID, но ищет его в разделе HKEY_CLASSES_ROOT\Wow6432Node\CLSID.
В этом случае поставщик находится в папке SysWow64 .
Примечание.
Эти примеры относятся к 64-разрядным компьютерам. На 32-разрядных компьютерах нет Wow6432Node в реестре.
Пути реестра для проверки наличия SQL Server Native Client 11.0
Эти ключи реестра представляют собой пути к SQL Server Native Client 11.0 в редакторе реестра на 64-разрядных компьютерах:
HKEY_CLASSES_ROOT\SQLNCLI11.1\CLSIDHKEY_CLASSES_ROOT\CLSID\<guid>\InProcServer32HKEY_CLASSES_ROOT\Wow6432Node\CLSID\<guid>\InProcServer32
Это пути в редакторе реестра для 32-разрядных компьютеров:
HKEY_CLASSES_ROOT\SQLNCLI11.1\CLSIDHKEY_CLASSES_ROOT\CLSID\{guid}\InProcServer32
Поддержка поставщиков OLE DB, отличных от Microsoft
Техническая поддержка для поставщиков OLE DB, не относящихся к Microsoft, ограничивается проверкой того, что ProgID указывает на корректный CLSID и что подраздел InProcServer32 указывает на правильную библиотеку DLL. Если путь неверный или запись реестра не существует, переустановите поставщика или обратитесь к поставщику.
Регистрация библиотеки DLL поставщика вручную с помощью regsvr32
Если файлы существуют, но записи реестра отсутствуют, можно вручную зарегистрировать поставщика с помощью REGSVR32. Чтобы зарегистрировать DLL-библиотеку COM, выполните следующую команду в командной строке, запущенной с повышенными правами:
Regsvr32 sqlncli11
Если доступны как 32-разрядная, так и 64-разрядная версии поставщика, выполните команду для обеих DLL. Используйте 32-разрядную командную строку для регистрации 32-разрядной библиотеки DLL.