-1

SQL Server 2008 Expressを使用しているプロジェクトで作業しています。私はSQLEXPRESSというインスタンスを持っていた私は、このコネクション文字列を経由してDBへの接続に使用:.edmxファイルによって生成された接続文字列を使用してSQL Server 2016 Developerに接続できません

<add name="MyConn" connectionString="metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;provider=System.Data.SqlClient; 
provider connection string=&quot;data source=PCNAME\SQLEXPRESS;initial catalog=DbName;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

この接続文字列が最初に.edmxファイル(私はASP.NET MVCプロジェクトに取り組んでいる、データベースによって生成されました、エンティティフレームワーク)とそれは正常に働いた。

デベロッパーライセンスをインストールしました。インストールプロセス中に、デフォルトのインスタンス(MSSQLSERVER)を使用しました。詳細については、生成されたInstanceIDはMSSQL13.MSSQLSERVERです。

私のソリューションでは、新しいSQL Serverでテーブルを再生成するためのSQLプロジェクトがあります。私は簡単にウィザードを介してサーバーに接続することができます。

SQL Server Management Studioを使用して、サーバー上のすべてが正常であることを確認しました。完全に動作します(テーブルが生成され、接続は正常でした)。

しかし、私のコードは、サーバーに接続することができませんし、体系的にここerror 26 - can't locate server instance

で最初の呼び出しに失敗したことは、私がこれまで試したものです:

  • 変更のdata sourceパラメータ=>は動作しませんlocalhost..\MSSQLSERVER.\PCNAMEPCNAME.MSSQLSERVERPCNAME.MSSQL13.MSSQLSERVERDOMAIN.MSSQLSERVERDOMAIN\PCNAMEにかかわり列
  • は、.udpファイルを作成して自分のサーバーに接続し、コピー/生成された接続文字列を貼り付ける彼らは
  • ある=>実行しているSQLサービスを確認:Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MyDB;Data Source=PCNAME =>
  • を動作しません、私の.edmxファイル(および再生成接続stirng)=>は
  • this suggestion =を確認して動作しません>すべての接続ウィザードを実行し、なぜそれはすでに

正しかった(SSMS、 .udlファイル、.edmx発電、私のDBプロジェクトを)動作しているようですが、私のコードはサーバ?私はコードの行を変更しませんでした。

編集:私は、同じサーバー上のログデータベースを持っているクレイジーなことは、コネクション文字列が

<add name="NLogConn" connectionString="Data Source=localhost;initial catalog=DBLOG;integrated security=True" providerName="System.Data.SqlClient" /> 

あり、それは、実際にネットワークエラーをログに記録される!!それは本当に接続文字列エラーまたはEFエラーですか?私は最新のEFバージョン6.1.3をEF(メインとDALのレイヤー)を参照する各プロジェクトで使用しています

答えて

0

作業接続文字列で始めることができることを深く理解する前に、 Entity Framework 6.1.3を使用しているVisual Studio 2017エンタープライズのローカルマシンで

<connectionStrings> 
    <add name="TesterEntities" connectionString="metadata=res://*/Tester.csdl|res://*/Tester.ssdl|res://*/Tester.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=Tester;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

マークアップされた接続文字列は次のとおりです。

も2016 Developer Editionのデフォルトのインスタンスのため、私は私のローカルサーバーを使用しています私のテスト接続の場合
=&quot;data source=.;initial catalog=Tester;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot; 

(。このために省略形です)。私は統合されたセキュリティを使用しています。私が対象としているデータベース名(初期カタログ)はTesterです。

Entity Framework(EF)がターゲットに正しく当てられていない場合は、いくつか考慮すべき点があります。

  1. 使用しているEFのバージョンは何ですか? MSがコアに移行する前に、EFの最後の.NETフル版は6.1.3だったと思います。あなたがNugetの最新版をダウンロードしていることを確認してください。
  2. Expressから完全なSQLに移行した場合、接続文字列の 'プロバイダ'はしばしば同じではありません。または、SQLがインストールされる前にローカルのデフォルトインスタンスになる可能性があります。これで既存の接続文字列を上書きしないようにしてください。プロバイダは次のようにする必要があります。 'provider = System.Data.SqlClient'
  3. ANOTHERプロジェクトのEFプロジェクトを参照しています。 EFを参照する各プロジェクトは、EF用のNuGetパッケージと、接続文字列を含む設定ファイルを持つ必要があります。 EG:私が書いたものをテストするためのコンソールプロジェクトを持っていて、 'EF Testing'という別のプロジェクトを参照していますが、接続文字列を持つappの設定はありません。それは動作しません。
+0

1 - 私はEF 6.1.3、最新バージョンを使用しています。 2 - 私は間違っている場合私を修正しますが、私はEFを使用する場合、私はプロバイダとしてSystem.Data.EntityClientを使用しなければならないと思いますか? 3 - EFを参照する各プロジェクトには、独自の設定ファイル(メインプロジェクトとDALのみ)があり、接続文字列がすべて同じであることを確認しました。また、元の投稿に編集しました – user2687153

+0

あなたの例で示した接続文字列は、EF接続文字列ではありません。すべてのメタデータが必要です: 'metadata = res://*/Tester.csdl..etc'この接続文字列がEFによって生成された生成ファイルを参照していることを示します。 – djangojazz

+0

私は 'MyConn'を与えた最初のものに' metadata = res:// 'をコピー/ペーストしました(これはうまくいかないようです)。もう1つは実際にEFによって生成されたものではなく、これらのメタデータは必要ありません。 – user2687153

関連する問題