为什么我的数据库连接失败?

Af'*_*faq 3 sql-server sql-server-2012 connectivity

最近我使用 SQL Server 2012 开发了软件。现在当我尝试连接时,我收到此错误消息:

无法连接到 AAFI\SQLEXPRESS

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

Aar*_*and 8

这是一个极其常见的错误,在线搜索结果数以百万计。典型的故障排除步骤包括:

  • 确保 SQL Server 服务实际上正在运行(SQL Server 配置管理器 > SQL Server 服务 > 检查特定实例的状态并确保它显示“正在运行”,否则右键单击 > 开始)。
  • 确保 SQL Server Browser 服务正在运行,您可以像上面一样在配置管理器中进行检查,或者sc query sqlbrowser从命令行使用(如果它没有运行,请右键单击 > 启动或从命令行运行net start sqlbrowser)。
  • 如果您尝试连接到另一台机器(或使用的名称由于某种原因迫使您路由到您的机器之外),请确保将服务器配置为允许远程连接。您可以通过使用远程桌面连接到该服务器并在本地运行来解决此问题:

    EXEC sys.sp_configure N'remote access', 1;
    GO
    RECONFIGURE WITH OVERRIDE;
    
    Run Code Online (Sandbox Code Playgroud)

    当然,如果它是您无法连接到的本地实例,这可能很难做到,因此您必须先使用此列表中的其他步骤在本地连接,然后才能与服务器交谈以更改此设置环境。

  • 确保运行 SQL Server 的端口已打开,并且 TCP/IP 已启用(例如,SQL Server Express 版在默认情况下需要远程连接的命名管道)。您可以在 Configuration Manager > SQL Server Network Configuration > Protocols for <instance name> > TCP/IP 中看到这一点,右键单击,属性,IP 地址选项卡,一直向下滚动以查看 (a) TCP/IP 已启用(如果没有,右键单击 > 启用,也可以尝试启用命名管道),并检查 IPAll > TCP 动态端口或 TCP 端口下列出的端口。请注意,如果它使用动态端口,则该端口可能会更改,并且如果 SQL Browser 未配置为自动启动,您可能会在下次重新启动时回到这里。
  • 确保服务器名称正确,并确保尝试使用 IP 地址、简单服务器名称和完全限定域名。如果服务器是本地的,尝试localhost127.0.0.1除服务器名称。确保您可以traceroute/tracert连接到服务器和telnet正在运行的端口。如果您可以连接到这些主机之一但不能连接到其他主机,请更改您的连接字符串、更改您的主机文件和/或 DNS,或咨询您的网络管理员。
  • 确保实例名称正确。人们经常输入他们的机器名并且没有意识到他们正在尝试连接到命名实例,这需要类似的语法server_name_or_ip\SQLEXPRESS-SQLEXPRESS通常是运行 SQL Server Express Edition 时使用的实例名称的常见语法。
  • 如果您无法使用这些方法中的任何一种进行连接,则可能是防火墙问题。您需要确定要打开哪些端口以及为谁打开(当然,您的 SQL Server 应该尽可能保护您的外部流量),但是您可以通过暂时完全禁用防火墙来快速测试这是否是问题所在。

这里有很多更详细的记录(在Paul White 的 wiki 帖子中找到):