【问题标题】:Can't connect to SQL Server database无法连接到 SQL Server 数据库
【发布时间】:2011-12-18 22:31:27
【问题描述】:

我目前正在使用 asp.net c# 开发一个 Web 应用程序。我今天所在的位置有一台服务器 将发布我的网站及其数据库。它是运行 Windows Server 2008 R2 的服务器。

但我有一个问题:

我的网站似乎无法访问数据库。如果我从本地网络上的另一台计算机运行网站,我可以访问服务器的数据库,但是当我从数据库所在的同一台服务器运行网站时,我不能。这真的很奇怪。我希望有人能帮帮忙。

我只是收到一条错误消息,它无法访问数据库。

最奇怪的是我在两台计算机上使用了相同的连接字符串,但它仍然不起作用。 Windows Server 2008 中是否有某种设置?

这是我的连接字符串:

<add name="ConnectionString" 
     connectionString="Data Source=AXELS;Initial Catalog=Sailor;Persist Security Info=True;User ID=sa;Password=saab123" 
     providerName="System.Data.SqlClient" />

【问题讨论】:

  • 检查实际异常信息。
  • 如果将连接字符串中的服务器名称更改为localhost.,它是否在服务器上工作?
  • 我希望您不是真的使用sa 帐户在生产环境中登录到您的SQL Server - 对吧???

标签: c# asp.net sql sql-server windows-server-2008


【解决方案1】:

由于连接在一台机器上而不是在另一台机器上工作,我猜你有防火墙或类似的问题 - 但在我们看到实际的错误消息之前很难判断。在此之前,您可能需要做一些事情:

  • 如果在出现错误之前连接似乎必须超时,则表明存在连接问题。两台服务器之间有防火墙吗?数据库服务器是否有防火墙明确允许您的机器(或内部)机器通过,但尚未设置为让网络服务器通过?您必须确保服务器上的 1433 端口是开放的。

  • 网络服务器上是否有其他站点可以连接到数据库?

  • 如果您可以通过控制台访问服务器,请尝试设置从服务器到数据库的 ODBC - 通常在控制面板 -> 数据源 (ODBC) 中。如果您使用相同的数据库服务器、用户名和密码建立连接并测试连接,您可能会得到一些指向错误的指针。

如果以上内容没有为您提供答案,我会尝试执行此处描述的步骤:

http://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a-connection-to-sql-server-microsoft-sql-server-error/

如果失败了,看看这个——显然只有当你得到SQL Network Interfaces, error: 26时才有效

http://blogs.msdn.com/b/sql_protocols/archive/2007/05/13/sql-network-interfaces-error-26-error-locating-server-instance-specified.aspx

【讨论】:

  • 我在 ODBC 中做了一个测试连接,效果很好哈哈,但是我的网站与数据库的连接不起作用...
  • 您的连接到底在哪里失败了?当你打开连接时,试着用它做点什么,...?
  • 当我要打开连接时
  • 与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)
  • 当前网络请求执行过程中产生了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
【解决方案2】:

这可能是权限问题。
您需要向我们展示您的连接字符串,以便我们了解您尝试连接到数据库的具体方式。

例如,如果您使用 Windows 身份验证,可能您的应用在两台机器上运行在不同的帐户下 - 并且其他计算机上的帐户拥有访问数据库的权限,但数据库服务器没有。

【讨论】:

    【解决方案3】:

    您是否检查过您使用的协议是否在 SQL Server 上启用,例如

    C:\Windows\System32\cliconfg.exe -- 64 位版本

    C:\Windows\SysWOW64\cliconfg.exe -- 32 位版本

    或检查 SQL Server 配置管理器的“SQL Server Native Client *”选项卡。

    【讨论】:

    • 请记住,我可以从我的其他本地电脑连接到数据库,所以我不认为存在某种协议问题
    • 如果 SQL Server 上未启用该协议,您将无法在本地使用该协议。 cliconfg 对于每台机器都是本地的。
    【解决方案4】:

    这仅适用于不使用 Windows 身份验证的情况,否则请阅读 Christian Specht 关于权限的帖子 - 在这种情况下,我同意。

    您可以从网络上的另一台 PC 进行连接,这意味着您的所有数据库设置、用户帐户和权限都可能设置正确。

    服务器解析 localhost 的方式似乎存在问题,因为它会尝试将数据源解析为 localhost,因为该机器上的 AXELS = localhost。

    查看你的 hosts 文件,看看是否有任何有趣的指针,除了默认指针。

    位于 C:\Windows\System32\drivers\etc

    应该有一个入口:127.0.0.1 localhost

    【讨论】:

    • 您能否确认您是否使用 Windows 身份验证?在这种情况下,您的网站可能在服务器本身上使用 ASPNET 用户,而服务器本身并没有授予它访问数据库的权限。这可以解释为什么您可以远程连接,因为您要么使用网络帐户,要么使用具有访问权限的其他服务帐户。
    猜你喜欢
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多