web-dev-qa-db-ja.com

データベースからプロバイダー情報を取得中にエラーが発生しました

エラーの取得:

System.Data.ProviderIncompatibleException:データベースからプロバイダー情報を取得中にエラーが発生しました。これは、EntityFrameworkが誤った接続文字列を使用していることが原因である可能性があります。
詳細については内部例外をチェックし、接続文字列が正しいことを確認してください。
---> System.Data.ProviderIncompatibleException:プロバイダーがProviderManifestToken文字列を返しませんでした。
---> System.Data.SqlClient.SqlException:SQLServerへの接続の確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、およびSQLServerがリモート接続を許可するように構成されていることを確認してください。 (プロバイダー:SQLネットワークインターフェイス、エラー:25-接続文字列が無効です)

Add-Migrationを実行しようとすると、同じエラーが発生します

これが私の接続文字列です。SQLEXPRESSではなくローカルSQLサーバーにアクセスする必要があります。

  <connectionStrings>
    <add name="ReaderInsightDbContext" 
         connectionString="data source=localhost\MSSQLSERVER;
                         initial catalog=ReaderInsight;Integrated Security=True" 
         providerName="System.Data.SqlClient" />
  </connectionStrings>

私のDBは次の場所にあります。

C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA

したがって、私のインスタンスはMSSQLSERVERです。何が起こっているのかわからない。最初は問題なく動作しましたが、UOWパターンを使用するようにコードを変更した後、これが発生しています。また、EF4.3からEF5にアップグレードしました。同じ問題。

接続文字列でデータソースの多くのバリエーションを試しましたが、機能しませんでした。いくつかの例を示します。

  • localhost\MSSQLSERVER
  • 。\ MSSQLSERVER
  • // localhost\MSSQLSERVER
  • (ローカル)\ MSSQLSERVER
  • 127.0.0.1\MSSQLSERVER

。\ SQLEXPRESSを実行すると、機能します。

9
user1538467

それを解決することができました。

要するに、移行ファイルを手動で削除すると問題が発生します。

接続文字列が次のようになっていることを確認してください。

  <connectionStrings>
    <add name="ReaderInsightDbContext" 
     connectionString=
     "Data Source=(local);Initial Catalog=ReaderInsight;Integrated Security=True"
     providerName="System.Data.SqlClient" />
  </connectionStrings>

保留中の変更がまだあると言ったために機能しなかったUpdate-Database -TargetMigration:$InitialDatabaseを実行しました。

だから私は実行しました

System.Data.Entity.Database.SetInitializer(     
  new System.Data
            .Entity
            .DropCreateDatabaseIfModelChanges<ReaderInsightDbContext>()); 

global.asaxファイル内。

コメントアウトしたので、二度と実行されません。次に、Add-Migration Initを実行すると、DB全体のスクリプトが再作成され、Update-Databaseを実行すると魅力的なように機能しました。

8
user1538467

ソリューションのスタートアッププロジェクトをエンティティdllプロジェクト(app.configファイルがある)に設定することで解決しました。パッケージマネージャーコンソールウィンドウの「デフォルトプロジェクト」を正しいエンティティdllプロジェクトに設定しましたが、機能しませんでした。詳細については

SQL Server2012を使用するEntityFramework 6はSystem.Data.Entity.Core.ProviderIncompatibleExceptionを提供します system-data-entity-core-providerin

3
ATHER

接続文字列で使用しているSQLServerが起動しているか確認してください。

0

SQL Serverが起動しないパスワードを変更したときに、この問題が発生しました。それを確認します :)

0
Yuan

この投稿を参照してください:

MVC3ミュージックストアチュートリアル接続文字列の問題

MARS設定が欠落しているようです。

0
Del Lee

先日も同じ問題がありました。その理由は、MSSQLサーバーのバージョンでした。 VS2010とSQLSERVER 2008を使用しようとしましたが、機能しませんでした。 VS2010に付属している(そして起動されていない)SQL Expressでは正常に機能しましたが、SQLSERVERでは機能しませんでした。

0
Iwona Kubowicz