Domanda

Ho uno script basato su NAnt che eseguo sul mio PC locale che si connette a SQL Server 2008 Express in esecuzione anche sul mio PC locale per eliminare e ricreare database utilizzando file .sql: funziona bene, nessun problema qui.

Il problema arriva quando ho ricreato la stessa configurazione su un altro PC, ricevo l'errore nel mio script NAnt che dice che:

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()

Ho effettuato una ricerca online e ho scoperto che in un forum mi veniva suggerito di installare Microsoft SQL Server Native Client e ottenuto da questo URL.(Certo, ho installato solo la parte Native Client di questo)

Nonostante sia installato sul mio secondo PC, lo script mi ​​dà ancora lo stesso errore.Eventuali suggerimenti?

È stato utile?

Soluzione

Il provider corretto per SQL Server 2008 è SQLNCLI10.1.
Per SQL Server 2012, sarebbe SQLNCLI11. (fonte)

Purtroppo, la migrazione al 2008 non ha colto il cambiamento...

Altri suggerimenti

Potrebbe essere un problema con x86/x64?Se la workstation in questione è x64 e hai installato la versione x64 del client, ma l'applicazione che stai tentando di eseguire si trova nello spazio x86, potresti aver bisogno della versione x86 del client anche su quella workstation.Un'app x86 verificherà solo la presenza di una versione x86 del provider e, non vedendone alcuna, genererà un errore come questo.La versione x64 è probabilmente abbastanza intelligente da verificare la presenza di entrambe le versioni, anche se forse avresti la stessa situazione.

La stessa cosa accade con ODBC: le origini dati x86 e x64 non sono disponibili per l'altro tipo di applicazione: se desideri che qualcosa sia visibile da entrambe le build delle applicazioni, dovrai creare un'origine ODBC nello strumento di amministrazione di ciascuna versione .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top