Поставщик 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. (По общему признанию, я установил только родную клиентскую часть этого)

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

2 ответов


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

к сожалению, миграция в 2008 не приняла изменения...


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

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