Ответ 1
Правильным поставщиком SQL Server 2008 является SQLNCLI10.1
.
Для SQL Server 2012 это будет SQLNCLI11
. (источник)
К сожалению, переход на 2008 год не подменил изменения...
У меня есть основанный на 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 все равно дает мне ту же ошибку. Любые предложения?
Правильным поставщиком SQL Server 2008 является SQLNCLI10.1
.
Для SQL Server 2012 это будет SQLNCLI11
. (источник)
К сожалению, переход на 2008 год не подменил изменения...
Может быть проблема с x86/x64? Если рабочая станция является x64, и вы установили x64-версию клиента, но приложение, которое вы пытаетесь запустить, находится в пространстве x86, вам может понадобиться также версия клиента x86 на этой рабочей станции. Приложение x86 будет проверять только для версии x86 поставщика и не видит ничего, даст ошибку, подобную этой. Версия x64, вероятно, достаточно умна для проверки любой версии, хотя, возможно, у вас будет такая же ситуация.
То же самое происходит с ODBC - источники данных x86 и x64 недоступны для другого типа приложений - если вы хотите, чтобы что-то было видно из обеих наборов приложений, вам нужно создать источник ODBC в каждом версии Admin.