質問

NAnt ベースのスクリプトをローカル PC 上で実行し、SQL Server 2008 Express に接続し、.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 にインストールしたにもかかわらず、スクリプトでは依然として同じエラーが発生します。助言がありますか?

役に立ちましたか?

解決

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

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

他のヒント

これは、x86 / x64のに問題があるだろうか?問題のワークステーションがx64のある、そしてあなたは、クライアントのx64バージョンをインストールしましたが、あなたが実行しようとしているアプリケーションは、x86空間である場合、あなたにもそのワークステーション上のクライアントのx86バージョンが必要な場合があります。 x86のアプリは唯一のプロバイダのx86バージョンをチェックし、何も見ていない、このようなエラーが発生します。 x64バージョンは、多分あなたは同じような状況を持っていると思いますけれども、いずれかのバージョンを確認するのに十分な、おそらくスマートです。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top