Поставщик SQLNCLI не зарегистрирован на локальном компьютере.

У меня есть сценарий на основе NAnt, который я запускаю на своем локальном ПК, который подключается к SQL Server 2008 Express, и который также выполняется на моем локальном ПК для удаления и воссоздания баз данных с использованием файлов.sql - это прекрасно работает, здесь нет проблем.

Проблема возникает, когда я воссоздаю ту же настройку на другом ПК, в моем скрипте NAnt появляется сообщение об ошибке:

System.InvalidOperationException: The 'SQLNCLI' provider is not registered on the local machine.
  at System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper)
  at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
  at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
  at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
  at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
  at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
  at System.Data.OleDb.OleDbConnection.Open()
  at NAnt.Contrib.Util.SqlHelper..ctor(String connectionString, Boolean useTransaction)
  at NAnt.Contrib.Tasks.SqlTask.ExecuteTask()
  at NAnt.Core.Task.Execute()
  at NAnt.Core.Target.Execute()
  at NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies)
  at NAnt.Core.Project.Execute()
  at NAnt.Core.Project.Run()

Я выполнил поиск в Интернете и обнаружил, что на форуме было предложено установить собственный клиент Microsoft SQL Server и получить его по этому URL-адресу. (По общему признанию, я только установил часть Native Client)

Несмотря на то, что он установлен на моем втором ПК, скрипт все равно выдает мне ту же ошибку. Какие-либо предложения?

2 ответа

Решение

Правильный поставщик для SQL Server 2008 SQLNCLI10.1,
Для SQL Server 2012 это было бы SQLNCLI11, (источник)

К сожалению, миграция на 2008 год не принесла изменений...

Может ли быть проблема с x86/x64? Если речь идет о рабочей станции x64, и вы установили версию клиента x64, но приложение, которое вы пытаетесь запустить, находится в пространстве x86, возможно, на этой рабочей станции вам также может понадобиться версия клиента x86. Приложение x86 проверит только версию провайдера x86, и, не увидев ни одной, выдаст ошибку, подобную этой. Версия x64, вероятно, достаточно умна, чтобы проверить любую из этих версий, хотя, возможно, у вас будет такая же ситуация.

То же самое происходит с ODBC - источники данных x86 и x64 недоступны для приложений другого типа - если вы хотите, чтобы что-то было видно из обеих сборок приложений, вам необходимо создать источник ODBC в инструменте администратора каждой версии,

Другие вопросы по тегам