我目前正在使用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" />
答案 0 :(得分:2)
由于连接在一台机器而不在另一台机器上工作,我猜你有防火墙或类似的问题 - 但在我们看到实际的错误信息之前很难判断。在那之前,您可能想要做一些事情:
如果在出现错误之前连接似乎已超时,则表明存在连接问题。你在两台服务器之间有防火墙吗?数据库服务器是否具有明确允许您的计算机(或内部)计算机通过的防火墙,但尚未设置为让Web服务器通过?您必须确保服务器上的端口1433已打开。
网络服务器上是否还有其他可以连接数据库的网站?
如果您具有对服务器的控制台访问权限,请尝试设置从服务器到数据库的ODBC - 通常在控制面板中 - &gt;数据源(ODBC)。如果您使用相同的数据库服务器,用户名和密码建立连接并测试连接,您可能会得到一些错误指示。
如果以上内容没有为您提供答案,我会尝试完成此处描述的步骤:
如果失败了,请看一下 - 这显然只有在你SQL Network Interfaces, error: 26
答案 1 :(得分:1)
这可能是一个许可问题 您需要向我们显示您的连接字符串,以便我们可以看到您是如何尝试连接到数据库的。
例如,如果您使用的是Windows身份验证,则可能是您的应用在两台计算机上的不同帐户下运行 - 而其他计算机上的帐户具有访问数据库的权限,但该帐户位于数据库服务器没有。
答案 2 :(得分:0)
您是否检查了SQL Server上是否启用了您正在使用的协议,例如
C:\ Windows \ System32 \ cliconfg.exe - 64位版本
C:\ Windows \ SysWOW64 \ cliconfg.exe - 32位版本
或检查SQL Server配置管理器的“SQL Server Native Client *”选项卡。
答案 3 :(得分:0)
这仅适用于您不使用Windows身份验证的情况,否则请阅读有关Christian Specht特权的帖子 - 在这种情况下我同意。
您可以从网络上的另一台PC进行连接,这意味着所有数据库设置,用户帐户和权限都可能设置正确。
似乎服务器解析localhost的方式可能存在问题,因为它会尝试将数据源解析为localhost,因为AXELS =该机器上的localhost。
查看您的hosts文件,看看是否有任何有趣的指针,除了默认值。
位于C:\ Windows \ System32 \ drivers \ etc
应该有一个条目:127.0.0.1 localhost