【问题标题】:Can't connect to SQL Azure from EF, but can from SSMS无法从 EF 连接到 SQL Azure,但可以从 SSMS
【发布时间】:2018-04-10 10:51:15
【问题描述】:

我们有一个 Azure SQL 服务器正在运行,我们将其用于我们的 Azure Web 应用程序。 Web App 可以毫无问题地连接。我们正在尝试通过 C# 控制台应用程序使用最新的 EF 迁移远程更新数据库。 但是我们得到以下异常。

与 SQL Server 建立连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定实例)

我们尝试使用 SSMS 从同一台 PC 进行连接,但没有出现任何问题。是的,在有人问我们之前,我们将 Azure 中的 IP 列入白名单,否则我们甚至无法通过 SSMS 访问。我们还尝试在连接字符串中使用和不使用“tcp:”。

这是我们在 Web 和控制台应用程序中使用的连接字符串:

Server=tcp:{servername}.database.windows.net;Database={dbname};user id = {userid};password = {password};MultipleActiveResultSets=True;

在 SSMS 中,我们只使用 {servername}.database.windows.net 并使用凭据。

提前致谢。

【问题讨论】:

  • 你能发布你的连接字符串(没有敏感信息)吗?你有没有检查你的IP地址和实例名称是否与SSMS相同?
  • 我更新了我的问题。是的,毫无疑问是同一个IP。
  • 测试期间防火墙是否关闭?因此,您对 Web App 和 Consol App 使用相同的连接字符串。所以看起来你的系统阻止了这个控制台的连接。
  • 测试时防火墙完全关闭。
  • 尝试将以下内容添加到您的连接字符串中:Trusted_Connection=False;Encrypt=True; SSMS 可能会默认选中这些选项,而您的应用则没有。

标签: entity-framework azure azure-sql-database connection-string


【解决方案1】:

Azure SQL 需要安全连接。您必须在连接字符串中添加以下内容:

Trusted_Connection=False;Encrypt=True;

【讨论】:

  • 得到完全相同的异常。
  • 我在我们的应用程序中检查了完整的连接字符串,它看起来和你的有点不同,也许你应该试试:Data Source=tcp:{servername}.database.windows.net,1433;Initial目录={dbname};用户 ID={userid};Password={password};Trusted_Connection=False;Encrypt=True;
【解决方案2】:

我们无法解决这个问题。相反,我们选择了 ReadyRoll,它非常适合我们。

【讨论】:

  • 我们已经切换回我们的第一种方法(控制台应用程序使用代码优先迁移更新数据库),这一次它的工作方式与我们最初预期的一样。我们不确定为什么这次它会起作用。对于任何想知道的人,我们不再使用 ReadyRoll,因为保持本地开发数据库与 ReadyRoll 同步对我们来说是一场彻头彻尾的噩梦。也许我们做错了什么,但现在一切都如我们所愿。
猜你喜欢
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 2013-05-03
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多