介绍
在本技巧中,我们将在Windows机器上配置Microsoft SQL Server以侦听特定的TCP端口。我们将启用TCP/IP和命名管道并配置防火墙规则,以便其他网络计算机可以与SQL Server实例进行通信。
先决条件
- 机器上安装了Microsoft SQL Server。
配置命名管道和TCP/IP协议
让我们首先为SQL Server配置命名管道和TCP/IP。我已在本地计算机上安装SQL Server 2019。
第1步
从“开始”菜单打开SQL Server配置管理器。
第2步
让我们首先为SQL Server实例启用命名管道(在我的例子中是MSSQLSERVER)。转到SQL Server网络配置(在控制台窗格中)并单击MSSQLSERVER的协议。
第 3 步
在详细信息窗格(右侧面板)中,右键单击命名管道协议,然后单击启用以启用该特定SQL实例的命名管道。
第 4 步
接下来,我们将为SQL Server实例启用TCP/IP连接。因此,右键单击TCP/IP协议并单击启用选项。
第 5 步
现在再次右键单击TCP/IP协议,然后单击属性选项。
第 6 步
现在您可以看到TCP/IP属性窗口,单击“协议”选项卡,在“全部侦听”属性中选择“是” 。
第 7 步
现在单击IP地址选项卡,向下滚动到IPALL部分。现在将TCP动态端口属性的值更改为空白。如果其值为零,则数据库引擎将侦听动态端口。接下来,在TCP Port属性中,输入您希望此IP地址侦听的端口号(在我的例子中为1717),然后单击OK按钮。您还可以通过用逗号分隔多个端口来指定它们。
注意:如果您想使用单个IP地址(IP n部分),请在“协议”选项卡中将“侦听所有”属性设置为“否” 。在这里,我想使用IPAll部分,因此,我在Protocol选项卡中将Listen All属性设置为Yes 。
第 8 步
以上配置只有在我们重启SQL Server Instance服务后才会生效。所以现在从控制台窗格中选择SQL Server Services选项。
第 9 步
现在,从详细信息窗格中右键单击SQL Server ( MSSQLSERVER ),然后单击重新启动按钮以重新启动SQL Server服务。
我们已经使用SQL Server配置管理器成功地配置了SQL Server数据库引擎实例以侦听特定的固定端口。接下来,我们需要配置一个防火墙,以便我们指定的端口(在我的例子中是1717)可以在防火墙中打开。
允许SQL端口的防火墙配置
现在我们已经将SQL Server配置为侦听特定端口,我们需要在防火墙中打开该特定端口。让我们看看如何配置防火墙。
第1步
从开始菜单打开Windows Defender防火墙。
第2步
您将在控制面板中看到Windows Defender防火墙窗口。单击左侧面板中的高级设置链接。
第 3 步
现在您将看到具有高级安全性的Windows Defender防火墙窗口。单击左侧面板中的入站规则,然后单击右侧面板中的新建规则按钮。
第 4 步
现在您将看到新建入站规则向导窗口。在Rule Type步骤中,选择Port ,因为我们希望允许来自防火墙的SQL端口1717,然后单击Next按钮。
第 5 步
在协议和端口步骤中,选择特定本地端口并在文本框中输入我们的 SQL 端口 1717,然后单击下一步按钮。
第 6 步
在操作步骤中,选择允许连接并单击下一步按钮。
第 7 步
在Profile步骤中,选中所有复选框并单击Next按钮。
第 8 步
在Name步骤中,为规则指定一个有意义的名称并提供描述,然后单击Finish按钮。
第 9 步
现在您可以看到我们的新规则列在入站规则列表中。
优秀!我们已成功配置防火墙,从外部打开数据库实例连接的SQL端口。
预期错误/问题
有时,即使在进行了上述配置后,您也可能会在与外部SQL Server实例的连接中遇到一些问题/错误。请确保:
- 在SQL Server Configuration Manager的控制台窗格中,单击SQL Server Services,确保SQL Server Browser服务正在运行。
- 如果您分配了1433以外的SQL端口,则必须在SQL连接时在服务器名称中指定端口号。例如,在我的例子中,cloude-desire-01, 1717。
结论
如您所见,如果您准确地按照上述步骤操作,很容易在特定端口上为SQL Server实例配置外部访问。
Configure Named Pipe and TCP/IP Settings of SQL Server - CodeProject