通过TCP / IP连接到外部托管计算机上的2014 SQLEXPRESS数据库

时间:2015-01-04 04:08:18

标签: sql-server external remote-access tcp-ip

我正在开发一个系统,我可以从多个位置更新一个小型数据库。我希望在我的家用计算机上托管数据库,并允许通过tcp / ip从其他两个位置连接到数据库。

到目前为止,我已完成以下任务:

  1. 为SQLEXPRESS启用TCP / IP
  2. 我的防火墙上允许的端口1433 tcp
  3. 我的防火墙上允许的端口1434 udp
  4. 启用SQLEXPRESS服务器以允许远程连接
  5. 我希望能够通过在其他PC上打开sql management studio并使用以下格式连接到数据库[ExternalIP] \ SQLEXPRESS但是到目前为止我还是无法这样做。我已经看过我的外部IP可能是什么了,我得到两个不同的值:

    86.XX.X.XXX 66.XXX.XX.XX

    当所有内容都已正确配置时,我是否应该使用这种格式的这些值中的任何一个来连接其他sql管理工作室?有没有我缺少的步骤?

2 个答案:

答案 0 :(得分:5)

SQL Server的命名实例默认不在端口1433上侦听,而是在每个服务启动时确定的随机端口上侦听。它是 sql浏览器服务的功能,为客户端提供每个运行实例的实际端口(以及使用固定的1434 udp端口完成的端口)。

必要的步骤是将服务器配置为使用固定端口,然后设置防火墙和路由器以允许该端口。连接时,只需使用外部IP地址和端口,但不要使用实例名称(因为它会调用浏览器服务,而固定端口则不需要)。

要恢复,必要的步骤将是:

  1. 在服务器上启用远程连接。
  2. 根据需要设置用户和权限(Windows身份验证对互联网很痛苦,因此强烈建议使用SQL身份验证)
  3. 为实例启用TCP / IP。
  4. 将服务器配置为使用固定端口进行连接(标准为1433)。 Look here获取指示。
  5. 重新启动数据库服务器。
  6. 授予防火墙权限,以允许所选端口上的服务器可执行传入连接。此时局域网中的其他计算机应该连接。
  7. 在路由器上将您打开的端口转发到本地计算机专用IP(请注意,在Windows中,您必须将计算机配置为使用固定的本地IP而不是DHCP)。
  8. 通过互联网或仅使用外部IP与客户进行测试。
  9. 请注意,对于来自远程客户端的连接,作为服务器名称,您必须使用 86.XX.X.113,1433 (端口号用逗号分隔,如果是&#39则可选; s 1433)。请注意,即使您将其安装为SQLEXPRESS或其他任何名称,也没有实例名称。这是因为有一个固定的侦听端口(默认情况下与默认实例一样)。这消除了对浏览器服务和udp 1434的需求,以及动态端口转发的痛苦。

    您还应检查您的ISP最有可能为您提供动态外部IP,以便在更改时重新配置客户端。或者您可以使用一些动态DNS服务。

答案 1 :(得分:1)

配置MSSQL Express 2014连接远程PC或PHP等。

查看视频教程Easy Config Server到MSSQL Express:

https://www.youtube.com/watch?v=5UkHYNwUtCo

Code Test Cliente Remote PHP:

$serverName = '192.168.1.64,49170'; //only the server name and ip MSSQL SERVER EXPRESS 
 $connectionInfo = array( "Database"=>"mydbName", "UID"=>"myUserId", "PWD"=>"myPass");
 $conn = sqlsrv_connect( $serverName, $connectionInfo);

 if( $conn ) {
   echo "Connection established";
 }else{
   echo "Connection could not be established.";
   die( print_r( sqlsrv_errors(), true));
 }