3

私は C#/Entity Framework Web アプリケーションをローカル SQL 2012 データベースに対して正常に実行しています。データベースを新しい RDS インスタンスにコピーし、Visual Studio と SQL Server Management Studio を介してデータベースにアクセスできます。

ユーザーを認証し、Entity Framework 呼び出しを使用してテーブルにレコードを挿入しようとする単体テストがあります -- dataContext.SaveChanges()。

次のエラーが表示されます。

{"The underlying provider failed on Open."}
{"No such host is known"}
{"A network-related or instance-specific error occurred while establishing a connection to SQL Server. 
The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections.
(provider: TCP Provider, error: 0 - No such host is known.)"}

私は一日中答えを求めてウェブを歩き回りましたが、これまでのところ、私が見つけた提案のいずれにも成功していません:

  • ポート 1433 が開いています Telnet 経由でエントリ ポイントにアクセスできます
  • 私の IP アドレスは、デフォルト セキュリティ グループの CIDR/IP 範囲に含まれています。
  • データコンテキストで接続を開こうとするとすぐにエラーが発生します。
  • db サーバーは、リモート接続を受け入れるように構成されています。
  • データベース サーバーは、混合認証 (Windows と SQL Server の両方) を使用するように構成されています。

Entity Framework 接続文字列

connectionString = "metadata=res://*/MyDb.csdl|res://*/MyDb.ssdl|res://*/MyDb.msl;provider=System.Data.SqlClient;provider connection string="Data Source=MyAwsEntryPoint;Initial Catalog=MyDb;User ID=MyUser;Password=MyPassword;Persist Security Info=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient"

標準データベース接続文字列

connectionString = "Data Source=MyAwsEntryPoint,1433;Initial Catalog=MyDb;User ID=MyUser;Password=MyPassword;Persist Security Info=True;Application Name=MyAppName;"
4

1 に答える 1

3

問題は接続文字列にありました。具体的には、そこに「アプリケーション名」と「アプリ」のプロパティがありました。それらを削除すると、機能しました。

悪い:

<add name="MyDbEntities" connectionString="metadata=res://*/MyDb.csdl|res://*/MyDb.ssdl|res://*/MyDb.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MyDbServer;Initial Catalog=MyDb;Persist Security Info=True;User ID=MyDb;Password=MyPassword;Application Name=MyDb.API.Models;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

良い:

<add name="MyDbEntities" connectionString="metadata=res://*/MyDb.csdl|res://*/MyDb.ssdl|res://*/MyDb.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MyDbServer;Initial Catalog=MyDb;Persist Security Info=True;User ID=MyDb;Password=MyPassword;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
于 2013-04-25T03:19:04.220 に答える