Подтвердить что ты не робот

Поставщик "SQLNCLI" не зарегистрирован на локальной машине

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

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

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 этого)

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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