Le fournisseur' SQLNCLI ' n'est pas enregistré sur la machine locale

j'ai un script basé sur NAnt que j'exécute sur mon PC local qui se connecte à SQL Server 2008 Express aussi en cours d'exécution sur mon PC local pour laisser tomber et recréer des bases de données en utilisant .fichiers sql-cela fonctionne très bien, pas de problème ici.

le problème vient quand j'ai recréé la même configuration sur un autre PC, je reçois l'erreur dans mon script NAnt disant que:

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

j'ai cherché en ligne et j'ai trouvé que dans un forum il a été suggéré que j'avais besoin d'installer le SQL Microsoft Serveur Client natif, et obtenu à partir de cette URL. (Certes, je n'ai installé que la partie Client natif de ceci)

bien que ceci soit installé sur mon second PC, le script me donne toujours la même erreur. Toutes les suggestions?

18
demandé sur KyleMit 2009-09-27 00:22:55

2 réponses

le fournisseur correct pour SQL Server 2008 est SQLNCLI10.1.

Pour SQL Server 2012, ce serait SQLNCLI11. (source)

malheureusement, la migration vers 2008 n'a pas repris le dessus...

21
répondu user181938 2013-02-11 14:11:44

est-ce un problème avec x86/x64? Si la station de travail en question Est x64, et que vous avez installé la version x64 du client, mais que l'application que vous essayez d'exécuter est dans l'espace x86, Vous pouvez avoir besoin de la version x86 du client sur cette station de travail également. Une application x86 ne vérifiera qu'une version x86 du fournisseur, et n'en voir aucune donnera une erreur comme celle-ci. La version x64 est probablement assez intelligent pour vérifier la version, mais peut-être que vous auriez la même situation.

cette même chose se produit avec ODBC-x86 et X64 les sources de données ne sont pas disponibles pour l'autre type d'application - si vous voulez que quelque chose soit visible à partir des deux compilations d'applications, vous aurez besoin de créer une source ODBC dans l'outil D'administration de chaque version.

4
répondu SqlRyan 2009-09-30 20:54:12