web-dev-qa-db-ja.com

「SQLNCLI」プロバイダーがローカルマシンに登録されていません

NAntベースのスクリプトをローカルPCで実行し、SQL Server 2008 Expressに接続し、ローカル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から取得した であることがわかりました。 (確かに、これのNative Client部分のみをインストールしました)

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

18
Brett Rigby

SQL Server 2008の正しいプロバイダーはSQLNCLI10.1
SQL Server 2012の場合、SQLNCLI11。 (ソース)

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

22
user181938

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

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

4
SqlRyan