“SQLNCLI”提供程序未在本地计算机上注册

时间:2009-09-26 20:22:56

标签: sql-server nant sql-server-2008-express nantcontrib

我有一个基于NAnt的脚本,我在连接到SQL Server 2008 Express的本地PC上运行,也在我的本地PC上运行,使用.sql文件删除并重新创建数据库 - 这很好,这里没问题。 / p>

当我在另一台PC上重新创建相同的设置时出现问题,我在我的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 Native Client和got it from this URL。 (不可否认,我只安装了Native Client部分)

尽管在我的第二台PC上安装了这个,但脚本仍然给我同样的错误。有什么建议吗?

2 个答案:

答案 0 :(得分:22)

SQL Server 2008的正确提供程序是 SQLNCLI10.1 对于SQL Server 2012,这将是 SQLNCLI11 (source)

可悲的是,迁移到2008年没有发现变化......

答案 1 :(得分:4)

x86 / x64可能有问题吗?如果有问题的工作站是x64,并且您已安装x64版本的客户端,但您尝试运行的应用程序位于x86空间中,则您可能还需要该工作站上的客户端的x86版本。 x86应用程序只会检查提供程序的x86版本,并且看不到,将会出现类似这样的错误。 x64版本可能足够智能,可以检查任何一个版本,但也许你的情况相同。

同样的事情发生在ODBC上 - x86和x64数据源不可用于其他类型的应用程序 - 如果您希望从两个应用程序版本中看到某些内容,则需要在每个应用程序中创建一个ODBC源代码。版本的管理工具。