当我尝试从Internet连接到SQL Server 2005时出错

我的SQL Server在本地机器上。 我想通过互联网访问它。 我通过我想创build一个网站来连接本地的SQL Server 2005。

这是错误信息:

与SQL Serverbuild立连接时发生networking相关或特定于实例的错误。 服务器未find或无法访问。 validation实例名称是否正确,并将SQL Serverconfiguration为允许远程连接。 (提供程序:SQLnetworking接口,错误:26 – 错误定位服务器/实例指定)

感谢您的回复!

这不是你正在寻找的答案,但是……阅读并思考,至less安全是有意义的。

由于存在安全风险,您决不应该从Internet访问SQL Server,而且我甚至不build议您在DMZ中放置Web服务器并在防火墙内部使用SQL Server的解决scheme。

我build议你把networking服务器放在一个DMZ中,把SQL服务器放在第二个DMZ中,并且确保只允许从第一个DMZ或防火墙内部到SQL服务器的stream量,而不是从互联网上。

如果你真的想忽略build议,确保你使用Web服务器和SQL服务器的VPN隧道,但记住它不会保存你从SQL注入,你必须自己阻止它。

我已经看到了一些例子,在哪里可以获得对networking服务器的控制权,并用防火墙内激活的xp_cmdshell来攻击SQL服务器。 基本上,在可能的情况下,备份完整的数据库,将其发送到某个地方,然后删除数据库,甚至使用DEL 在文件系统(使用xp_cmdshell)

如果你能控制它,你可以用SQL Server做很多令人讨厌的事情。

是您在互联网上parsingSQL Server实例时使用的名称。

尝试在您的远程计算机上查找您的网站名称(您的网站所在的位置):

nslookup servername.example.com 

如果名称不能parsing为IP地址,则可以使用networking的公共IP地址,也可以为该名称设置DNS条目。

您是否检查防火墙/路由器是否configuration为将SQL Server端口转发到您的内部SQL Server计算机? 服务器上是否有必须configuration的软件防火墙?

要从另一个站点连接到您的机器,您应该使用机器IP地址或机器名称,

[MACHINENAME] [INSTANCENAME]或[MACHINEIP] [INSTANCENAME]。

此外,如果您在公司环境中,如果您位于防火墙或代理之后,则可能会出现问题,因为您的计算机无法从外部直接访问,并且networking服务器可能只能从networking内部看到。 如果在机器上运行所有内容,请确保能够从networking外部看到机器。

确认您可以从Web服务器ping您的机器。 如果可以,那么机器名称或IP地址应该工作,或者它意味着您的Web服务器不在您的networking中,在这种情况下,Sql数据库将需要托pipe在Web服务器或Web服务器所在的同一networking中的另一台机器上。

其他的事情可能会导致这一点:

  • 您的ISP可能将您的Web服务器置于其防火墙之后,这可能会阻止SQL Server端口上的传出通信。 联系你的ISP,看看是否是这种情况。
  • 如果您在连接string中使用主机名,则必须是完全限定的(即“Server = mysqlserver.mydomain.com …”而不是“Server = mysqlserver”)。
  • 你的本地SQL服务器在你的家中还是在办公室? 如果它在家里,而且你的网站的连接string中使用了一个IP地址,那么你的家庭IP地址可能已经改变了。 当您不注册静态IP地址时,这通常发生在DSL或电缆线路上。