我的 SQL Server 位于本地计算机上。我想通过互联网访问它。我创建了一个网站,我想连接本地 SQL Server 2005。
这是错误信息:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:SQL 网络接口,错误:26 - 定位指定的服务器/实例时出错)
谢谢您的回复!
答案1
这不是您要寻找的答案,但是...请阅读并思考一下,至少如果对安全性感兴趣的话。
由于存在安全风险,您绝不应该从互联网访问 SQL Server,我甚至不建议将 Web 服务器放置在 DMZ 中并在防火墙内使用 SQL 服务器的解决方案。
我建议您将 Web 服务器放在一个 DMZ 中,将 SQL 服务器放在第二个 DMZ 中,并确保到 SQL 服务器的流量只允许从第一个 DMZ 或防火墙内部发送,而不允许从 Internet 发送。
如果您真的想忽略建议,请确保您使用来自 Web 服务器和 SQL 服务器的 VPN 隧道,但请记住,它不会使您免受 SQL 注入的侵害,您必须自行防止它。
我见过一些例子,在这些例子中,有可能控制 Web 服务器,并利用它在防火墙内激活 xp_cmdshell 来攻击 SQL 服务器。基本上,有可能备份整个数据库,将其发送到某个地方并删除数据库,甚至使用 DEL。在文件系统中(使用 xp_cmdshell)
如果您控制了 SQL Server,您就可以用它做很多令人讨厌的事情。
答案2
您使用的 SQL Server 实例名称是否可以在互联网上解析。
尝试在您的远程机器(您的网站所在地)上 nslookup 该名称:
nslookup servername.example.com
如果该名称无法解析为 IP 地址,您可以使用网络的公共 IP 地址或为该名称设置 DNS 条目。
您是否检查过防火墙/路由器是否配置为将 SQL Server 端口转发到内部 SQL Server 计算机?服务器本身是否有必须配置的软件防火墙?
答案3
要从另一个站点连接到您的机器,您应该使用机器 IP 地址或机器名称,
[机器名称][实例名称] 或 [机器 IP][实例名称]。
此外,如果您在公司环境中,如果您位于防火墙或代理后面,则可能会出现问题,因为您的机器无法从外部直接访问,并且 Web 服务器可能只能从网络内部看到。如果您在机器上运行所有程序,请确保您可以从网络外部看到该机器。
确认您可以从 Web 服务器 ping 您的机器。如果可以,则机器名称或 IP 地址应该有效,或者意味着您的 Web 服务器不在您的网络内,在这种情况下,Sql 数据库需要托管在 Web 服务器或网络中的另一台机器上相同的网络作为Web服务器。
答案4
其他可能导致这种情况的原因:
- 您的 ISP 可能将您的 Web 服务器置于防火墙后面,防火墙可能会阻止 SQL Server 端口上的传出流量。请联系您的 ISP,查看是否是这种情况。
- 如果在连接字符串中使用主机名,则它必须是完全限定的(即“Server=mysqlserver.mydomain.com...”而不是“Server=mysqlserver”)。
- 您的本地 SQL 服务器是在家里还是在办公室?如果是在家里,并且您在网站的连接字符串中使用 IP 地址,则可能是您的家庭 IP 地址已更改。当您未注册静态 IP 地址时,这种情况通常会在 DSL 或电缆线路上发生。