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

Connecting to a 2014 SQLEXPRESS database on an externally hosted computer through TCP/IP

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

从其他两个位置连接到数据库

到目前为止我已经完成了以下工作:

  1. 为 SQLEXPRESS
  2. 启用 TCP/IP
  3. 我的防火墙允许端口 1433 tcp
  4. 我的防火墙允许端口 1434 udp
  5. 已启用 SQLEXPRESS 服务器以允许远程连接

我希望能够通过在其他电脑上打开 sql management studio 并使用以下格式 [ExternalIP]\SQLEXPRESS 来连接到数据库,但到目前为止我还无法这样做.我查看了我的外部 IP 可能是什么,我得到了两个不同的值:

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

当一切都已正确配置时,我是否应该使用这些值中的任何一个与此格式从其他 sql 管理工作室连接?有没有我遗漏的步骤?

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

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

要恢复,必要的步骤如下:

  1. 在服务器上启用远程连接。
  2. 根据需要设置用户和权限(Windows 身份验证在 Internet 上很麻烦,因此强烈建议 SQL 身份验证)
  3. 为实例启用TCP/IP。
  4. 将服务器配置为使用固定端口进行连接(1433 为标准端口)。 Look here 获取说明。
  5. 重新启动数据库服务器。
  6. 授予防火墙权限,允许服务器在您选择的端口上执行传入连接。此时局域网内的其他电脑应该可以连接了。
  7. 在您的路由器上将您打开的端口转发到本地机器的私有 IP(请注意,在 Windows 中,您必须将您的计算机配置为使用固定的本地 IP 而不是 DHCP)。
  8. 通过 Internet 或仅使用您的外部 IP 与客户端进行测试。

请注意,对于来自远程客户端的连接,您必须使用 86.XX.X.113,1433 作为服务器名称(端口号以逗号分隔,如果是 1433,则可选)。请注意,没有实例名称,即使您将其安装为 SQLEXPRESS 或其他名称。这是由于具有固定的侦听端口(默认情况下类似于默认实例)。这消除了浏览器服务和 udp 1434 的需要,以及动态端口转发的痛苦。

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

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

观看视频教程轻松配置服务器到 MSSQL Express:

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

代码测试客户端远程 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));
 }