Поставщик sqlncli 1 не зарегистрирован на локальном компьютере
Итак, у меня есть служба Windows, которая имеет FileSystemWatcher это наблюдает за выходной папкой для некоторых файлов базы данных Visual FoxPro. И он использует VFPOLEDB.1 поставщик для чтения этих файлов. Я не могу уйти от этого провайдера, потому что он используется в производстве.
однако мне никогда не приходилось поддерживать это приложение раньше, поэтому моя коробка разработки не настроена для него. Вот мое окружение:
Итак, когда я впервые начал получать ошибку, я понял, что у меня просто нет поставщика вообще, и я был прав. Итак, я загрузил и установил его отсюда.
затем я снова опустил файлы в папку, но я получил та же ошибка.
Я подумал, что это x64 машина я мог испытывать проблемы с он регистрируется, так как он, вероятно, упал в SysWOW64 , и это было так, как я ожидал, поэтому я выполнил эту команду:
кто-нибудь знает еще один шаг, который мне нужно выполнить, чтобы зарегистрировать эту вещь?
измените свою платформу на x86, и все будет в порядке.
редактировать
Два года спустя есть что добавить к этому ответу. Теперь с Visual Studio 2013 сыр был перемещен. Статья связана объяснить в больших деталях как были изменены настройки компилятора по умолчанию. The AnyCPU целевой процессор с Prefer 32 bit означает, что ваше приложение работает как 32-битное приложение также в операционных системах x64bit, практически не оставляя места для приложения x64, если это не требуется.
С этой новой конфигурацией также важно помнить, что опубликовано в комментариях ниже Марком Берри. Если ваше (теперь 32bit) приложение должно работать в среде IIS 64bit, вам нужно установить Application Pool С Enable 32 bit Applications
У меня есть настольное приложение (Win7 x64 VS 2015) - и продолжал получать ту же ошибку, несмотря ни на что. Я изменил целевую платформу на x86, установил MSI как admin и т. д. - сделал все, что мог, google - и не повезло. Что помогло мне установить MSI для все вместо просто меня - один из последних экранов мастера в настройках.
I have a NAnt-based script which that I run on my local PC that connects to SQL Server 2008 Express also running on my local PC to drop and recreate databases using .sql files - this works fine, no problem here.
The problem comes when I have recreated the same set-up on another PC, I get the error in my NAnt script saying that:
I have searched online and have found that in a forum it was suggested that I needed to install the Microsoft SQL Server Native Client, and got it from this URL. (Admittedly, I have only installed the Native Client part of this)
Despite this being installed on my second PC, the script still gives me the same error. Any suggestions?
No, no reason really - it's part of the NAnt script I found online somewhere and didn't question it at the time. I'll look into that part further.
There's no need to change the DB access method, so I wouldn't waste time there if you don't have a need. It just seemed like an odd choice for what you were doing, but since it's in a script you found, that explains it.
2 Answers 2
The correct provider for SQL Server 2008 is SQLNCLI10.1 .
For SQL Server 2012, that would be SQLNCLI11 . (source)
Sadly, the migration to 2008 did not pick up the change.
You were right! The connection string needed to make reference to SQLNCL10, and not the SQLNCLI that I had in the script. Nice one.
Brett, you said SQLNCL10 rather than the correct SQLNCLI10. Probably a typo, but I cut and pasted it :-(
Edited to clean it up a little. I couldn't find an authoritative list of providers. Some people on the internet suggest SQLNCLI11.1 also works for 2012.
Could it be a problem with x86/x64? If the workstation in question is x64, and you've installed the x64 version of the client, but the application you're trying to run is in the x86 space, you may need the x86 version of the client on that workstation as well. An x86 app will only check for an x86 version of the provider, and seeing none, will give an error like this one. The x64 version is probably smart enough to check for either version, though maybe you'd have the same situation.
This same thing happens with ODBC - x86 and x64 data sources aren't available to the other type of application - if you want something to be visible from both builds of applications, you'll need to create an ODBC source in each version's Admin tool.
У меня есть сценарий на основе NAnt, который я запускаю на моем локальном ПК, который подключается к SQL Server 2008 Express, также работающему на моем локальном ПК, для удаления и воссоздания баз данных с использованием файлов .sql - это отлично работает, здесь нет проблем.
Я поискал в Интернете и обнаружил, что на форуме было предложено установить собственный клиент Microsoft SQL Server и получил его с этого URL. (По общему признанию, я установил только часть Native Client из этого)
Несмотря на то, что это было установлено на моем втором компьютере, скрипт по-прежнему выдает ту же ошибку. Какие-либо предложения?
Нет, на самом деле, без причины - это часть сценария NAnt, который я где-то нашел в Интернете и в то время не подвергал его сомнению. Я изучу эту часть дальше.
Нет необходимости менять метод доступа к БД, поэтому я бы не стал тратить на это время, если в этом нет необходимости. Это просто казалось странным выбором для того, что вы делали, но поскольку это в сценарии, который вы нашли, это объясняет.
Ошибки ODBC при подключении клиентского приложения к базе данных MS SQL
Использовать условную компиляцию, чтобы проверить, есть ли у пользователя собственный клиент SQL? (ODBC)
Я хочу использовать sqlncli.h, но только если он доступен пользователю, а если нет, я хочу использовать менее оптимальный, но функциональный код замены (я действительно просто хочу использовать несколько активных наборов результатов, другие .
Поставщик SQLNCLI11 имеет ошибку переполнения дробной части предоставленного значения времени
У меня есть следующая строка подключения: provider = SQLNCLI11; Server = [server]; Database = [db]; uid = [uid]; pwd = [pwd], и у меня есть следующий код: OleDbCommand oComm = new OleDbCommand (); .
SQL SERVER - ошибки поставщика TCP и OLE DB
Я использую связанный сервер для выполнения удаленных запросов между двумя БД на разных серверах. Обе БД - это SQL SERVER. Однако я получаю следующие ошибки: 1 - Поставщик TCP: тайм-аут семафора .
Поставщик TCP: существующее соединение было принудительно закрыто удаленным узлом
SQL Server Always Encrypted - сертификат не найден (ODBC)
Я столкнулся с проблемой при попытке протестировать устаревшее классическое приложение ASP с помощью столбца Always Encrypted SQL Server 2016. Это пример кода ASP: conn.ConnectionString d-flex ai-start fw-wrap">
2 ответа
Правильный поставщик для SQL Server 2008 - SQLNCLI10.1 .
Для SQL Server 2012 это будет SQLNCLI11 . (исходный код)
К сожалению, переход на 2008 год не принес изменений .
Ты был прав! Строка подключения должна ссылаться на SQLNCL10, а не на SQLNCLI, который у меня был в сценарии. Хороший.
Бретт, вы сказали SQLNCL10, а не правильный SQLNCLI10. Возможно опечатка, но я ее вырезал и наклеил :-(
Отредактировал, чтобы немного очистить. Я не смог найти авторитетный список поставщиков. Некоторые люди в Интернете предлагают, чтобы SQLNCLI11.1 тоже подойдет для 2012 года.
Может быть проблема с x86 / x64? Если рассматриваемая рабочая станция - x64, и вы установили x64-версию клиента, но приложение, которое вы пытаетесь запустить, находится в x86-пространстве, вам может потребоваться x86-версия клиента на этой рабочей станции. Приложение x86 будет проверять только версию поставщика x86 и, не увидев ничего, выдаст ошибку, подобную этой. Версия x64, вероятно, достаточно умен, чтобы проверить любую версию, хотя, возможно, у вас будет такая же ситуация.
То же самое происходит с ODBC - источники данных x86 и x64 недоступны для других типов приложений - если вы хотите, чтобы что-то было видимым в обеих сборках приложений, вам необходимо создать источник ODBC в инструменте администратора каждой версии. .
Компьютеры - это 64-битные машины, так что вы можете что-то там найти . Мне нужно будет исследовать дальше!
У меня есть сценарий на основе NAnt, который я запускаю на моем локальном ПК, который подключается к SQL Server 2008 Express, также работающему на моем локальном ПК, для удаления и воссоздания баз данных с использованием файлов .sql - это отлично работает, здесь нет проблем.
Я поискал в Интернете и обнаружил, что на форуме было предложено установить собственный клиент Microsoft SQL Server, и я получил его по этому URL-адресу . (По общему признанию, я установил только часть Native Client из этого)
Несмотря на то, что это было установлено на моем втором компьютере, скрипт по-прежнему выдает ту же ошибку. Какие-либо предложения?
Нет, на самом деле, без причины - это часть сценария NAnt, который я где-то нашел в Интернете и в то время не подвергал его сомнению. Я изучу эту часть дальше.
Нет необходимости менять метод доступа к БД, поэтому я бы не стал тратить на это время, если в этом нет необходимости. Это просто казалось странным выбором для того, что вы делали, но поскольку это в сценарии, который вы нашли, это объясняет.
Правильный поставщик для SQL Server 2008 - это SQLNCLI10.1 .
Для SQL Server 2012 это было бы SQLNCLI11 . (источник)
К сожалению, переход на 2008 год не принес изменений .
Ты был прав! Строка подключения должна ссылаться на SQLNCL10, а не на SQLNCLI, который у меня был в сценарии. Хороший.
Бретт, вы сказали SQLNCL10, а не правильный SQLNCLI10. Возможно опечатка, но я ее вырезал и наклеил :-(
Отредактировал, чтобы немного очистить. Я не смог найти авторитетный список поставщиков. Некоторые люди в Интернете предлагают SQLNCLI11.1 также работу на 2012 год.
Может быть проблема с x86 / x64? Если рассматриваемая рабочая станция - x64, и вы установили версию x64 клиента, но приложение, которое вы пытаетесь запустить, находится в пространстве x86, вам может потребоваться версия x86 клиента на этой рабочей станции. Приложение x86 будет проверять только версию поставщика x86 и, не увидев ничего, выдаст ошибку, подобную этой. Версия x64, вероятно, достаточно умен, чтобы проверить любую версию, хотя, возможно, у вас будет такая же ситуация.
То же самое происходит с ODBC - источники данных x86 и x64 недоступны для других типов приложений - если вы хотите, чтобы что-то было видимым из обеих сборок приложений, вам необходимо создать источник ODBC в инструменте администратора каждой версии. .
Компьютеры - это 64-битные машины, так что вы можете что-то там найти . Мне нужно будет исследовать дальше!
Синтаксис SQLNCLI при использовании OPENROWSET Мы использовали этот синтаксис при использовании OpenRowset для сбора данных из других экземпляров SQL Server. ВЫБЕРИТЕ a. * FROM OPENROWSET ('SQLNCLI', 'Server = MyServer; .
Я уже посетил все эти ответы, но они не работают для меня, я установил собственный сервер, но все еще получаю ту же ошибку, но все еще сталкиваюсь с этой ошибкой: я также загружаю драйверы OLE DB .
Альтернативный способ, с помощью которого я могу выполнить хранимую процедуру, которая генерирует динамические столбцы, которые могут быть переданы в PIVOT в разделе «in».
Я работаю над запросом в sql server management studio 2012, который генерирует динамические столбцы, поскольку мы использовали сводную таблицу для преобразования строк в столбцы. Из-за некоторых ограничений мы не можем использовать хранимую процедуру .
SQLNCLI устарел, но это только для SQLNCLI OLEDB или также для SQLNCLI ODBC?
У нас есть приложение, написанное на C (не C ++), которое использует sqlncli.h, в частности, реализацию ODBC, а не OLEDB. Согласно Microsoft, собственный клиент SQL Server (SQLNCLI) остается .
Читайте также: