18

ローカルPCで実行するNAntベースのスクリプトがあります。SQLServer2008Expressに接続し、ローカルPCでも実行して、.sqlファイルを使用してデータベースを削除および再作成します。これは正常に機能します。ここでは問題ありません。

別の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をインストールする必要があることが示唆され、このURLから取得したことがわかりました。(確かに、私はこれのネイティブクライアント部分のみをインストールしました)

これが2台目のPCにインストールされているにもかかわらず、スクリプトで同じエラーが発生します。助言がありますか?

4

2 に答える 2

22

SQLServer2008の正しいプロバイダーはですSQLNCLI10.1
SQL Server 2012の場合、それはになりますSQLNCLI11(ソース)

残念ながら、2008年への移行では変更が反映されませんでした...

于 2009-09-30T15:57:22.697 に答える
4

x86 / x64に問題があるのでしょうか?問題のワークステーションがx64であり、クライアントのx64バージョンをインストールしたが、実行しようとしているアプリケーションがx86スペースにある場合は、そのワークステーションにもx86バージョンのクライアントが必要になる場合があります。x86アプリは、プロバイダーのx86バージョンのみをチェックし、何も表示されない場合は、このようなエラーが発生します。x64バージョンは、どちらのバージョンもチェックできるほど賢いでしょうが、同じ状況になるかもしれません。

これと同じことがODBCでも発生します-x86およびx64データソースは他のタイプのアプリケーションでは使用できません-両方のビルドのアプリケーションから何かを表示したい場合は、各バージョンの管理ツールでODBCソースを作成する必要があります。

于 2009-09-30T20:54:12.590 に答える