通过 TCP/IP 连接到外部托管计算机上的 2014 SQLEXPRESS 数据库
Connecting to a 2014 SQLEXPRESS database on an externally hosted computer through TCP/IP
我正在开发一个可以从多个位置更新小型数据库的系统。我希望在我的家用计算机上托管数据库,并允许通过 tcp/ip.
从其他两个位置连接到数据库
到目前为止我已经完成了以下工作:
- 为 SQLEXPRESS
启用 TCP/IP
- 我的防火墙允许端口 1433 tcp
- 我的防火墙允许端口 1434 udp
- 已启用 SQLEXPRESS 服务器以允许远程连接
我希望能够通过在其他电脑上打开 sql management studio 并使用以下格式 [ExternalIP]\SQLEXPRESS 来连接到数据库,但到目前为止我还无法这样做.我查看了我的外部 IP 可能是什么,我得到了两个不同的值:
86.XX.X.XXX
66.XXX.XX.XX
当一切都已正确配置时,我是否应该使用这些值中的任何一个与此格式从其他 sql 管理工作室连接?有没有我遗漏的步骤?
SQL 服务器的命名实例 默认情况下不在端口 1433 上侦听,而是在每次服务启动时确定的随机端口上侦听。 sql 浏览器服务 的功能是为客户端提供每个 运行 实例的实际端口(这是使用固定的 1434 udp 端口完成的)。
必要的步骤是将服务器配置为使用固定端口,然后设置防火墙和路由器以允许该端口。连接时,只需使用带有端口的外部 IP 地址,而不是实例名称(因为那样会调用浏览器服务,而固定端口则不需要)。
要恢复,必要的步骤如下:
- 在服务器上启用远程连接。
- 根据需要设置用户和权限(Windows 身份验证在 Internet 上很麻烦,因此强烈建议 SQL 身份验证)
- 为实例启用TCP/IP。
- 将服务器配置为使用固定端口进行连接(1433 为标准端口)。 Look here 获取说明。
- 重新启动数据库服务器。
- 授予防火墙权限,允许服务器在您选择的端口上执行传入连接。此时局域网内的其他电脑应该可以连接了。
- 在您的路由器上将您打开的端口转发到本地机器的私有 IP(请注意,在 Windows 中,您必须将您的计算机配置为使用固定的本地 IP 而不是 DHCP)。
- 通过 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));
}
我正在开发一个可以从多个位置更新小型数据库的系统。我希望在我的家用计算机上托管数据库,并允许通过 tcp/ip.
从其他两个位置连接到数据库到目前为止我已经完成了以下工作:
- 为 SQLEXPRESS 启用 TCP/IP
- 我的防火墙允许端口 1433 tcp
- 我的防火墙允许端口 1434 udp
- 已启用 SQLEXPRESS 服务器以允许远程连接
我希望能够通过在其他电脑上打开 sql management studio 并使用以下格式 [ExternalIP]\SQLEXPRESS 来连接到数据库,但到目前为止我还无法这样做.我查看了我的外部 IP 可能是什么,我得到了两个不同的值:
86.XX.X.XXX 66.XXX.XX.XX
当一切都已正确配置时,我是否应该使用这些值中的任何一个与此格式从其他 sql 管理工作室连接?有没有我遗漏的步骤?
SQL 服务器的命名实例 默认情况下不在端口 1433 上侦听,而是在每次服务启动时确定的随机端口上侦听。 sql 浏览器服务 的功能是为客户端提供每个 运行 实例的实际端口(这是使用固定的 1434 udp 端口完成的)。
必要的步骤是将服务器配置为使用固定端口,然后设置防火墙和路由器以允许该端口。连接时,只需使用带有端口的外部 IP 地址,而不是实例名称(因为那样会调用浏览器服务,而固定端口则不需要)。
要恢复,必要的步骤如下:
- 在服务器上启用远程连接。
- 根据需要设置用户和权限(Windows 身份验证在 Internet 上很麻烦,因此强烈建议 SQL 身份验证)
- 为实例启用TCP/IP。
- 将服务器配置为使用固定端口进行连接(1433 为标准端口)。 Look here 获取说明。
- 重新启动数据库服务器。
- 授予防火墙权限,允许服务器在您选择的端口上执行传入连接。此时局域网内的其他电脑应该可以连接了。
- 在您的路由器上将您打开的端口转发到本地机器的私有 IP(请注意,在 Windows 中,您必须将您的计算机配置为使用固定的本地 IP 而不是 DHCP)。
- 通过 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));
}