2009-09-26 12 views
18

ローカルPC上で実行するNAntベースのスクリプトを使用して、ローカルPC上でSQL Server 2008 Expressに接続し、データベースを削除し再作成します。 SQLファイル - これは問題なく動作します。'SQLNCLI'プロバイダーがローカルマシンに登録されていません

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

これは私の2番目のPCにインストールされていますが、スクリプトでも私に同じエラーが表示されます。助言がありますか?

+0

すみませんでした...マシンを再起動しましたか? –

+1

.NetからOleDBプロバイダを使用する特別な理由は何ですか? SqlClientプロバイダを使用します。ドライバをインストールする必要はありません。すべてが.netに付属しています。 –

+0

彼は、必要に応じてSQL Server以外のものに書き込む柔軟性を望むかもしれません。 – SqlRyan

答えて

21

SQL Server 2008の正しいプロバイダはSQLNCLI10.1です。
SQL Server 2012の場合、SQLNCLI11となります。悲しいことに(source)

、2008への移行は、変更をピックアップしませんでした...

+0

あなたは正しいです!スクリプト内にあったSQLNCLIではなく、SQLNCL10を参照するために必要な接続文字列。良いですね。 –

+1

Brett、あなたは正しいSQLNCLI10ではなくSQLNCL10を言っています。おそらくtypoですが、切り取って貼り付けました:-( –

+0

少し修正して編集しました。プロバイダのリストを見つけることができませんでした。インターネット上の一部の人は** SQLNCLI11.1 **も動作します2012年のために。 – Kobi

4

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

同じことがODBCで起こります - x86とx64のデータソースは他のタイプのアプリケーションでは利用できません - 両方のアプリケーションビルドから何かが見えるようにするには、各バージョンの管理ツール

+0

PCは64ビットマシンなので、そこに何かがあるかもしれません...私はさらに調査する必要があります! –

関連する問題