【发布时间】:2013-04-19 03:35:00
【问题描述】:
我有一个 C#/Entity Framework Web 应用程序在本地 SQL 2012 db 上运行良好。我将数据库复制到一个新的 RDS 实例中,并且可以通过 Visual Studio 和 SQL Server Management Studio 访问数据库。
我有一个单元测试,它对用户进行身份验证,然后尝试使用实体框架调用在表中插入一条记录 -- 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 服务器配置为接受远程 连接。
- db 服务器配置为使用混合身份验证 (Windows 和 SQL Server)。
实体框架连接字符串
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;"
【问题讨论】:
-
看起来这是一个与网络相关的问题,与 EF 无关。
-
我会假设一个与网络相关的问题(因为这是唯一改变的事情),但我可以点击 db 并使用 .NET Membership 调用进行身份验证。只有当我尝试在我的 EF 数据上下文上打开一个数据库连接时,我才会遇到问题。 dataContext.Database.Connection.Open();
-
很公平。因此,如果您的会员提供商和 EF 访问的是同一个服务器/数据库,您应该确保信息匹配。您是否首先使用数据库/模型...?
-
数据库第一模型。将仔细检查连接字符串。
-
切换到 ODBC 连接它工作得很好(在将 EF 代码换成内联 SQL 语句之后)。所以这似乎排除了环境和数据库权限问题。
标签: visual-studio-2012 amazon-web-services entity-framework-5 sql-server-2012 amazon-rds