原文:通过配置Windows 防火墙允许使用TCP/IP协议远程访问数据库
本文适用于:2005、2008、2008R2所有版本
为了可以通过TCP/IP协议远程访问SQLServer数据库,需要做以下几点:
在SQLServer所运行的服务器上,我们必须找到SQLServer所侦听的端口然后添加到WIndows防火墙的【允许入站】中。
一:需要添加SQLServer的端口到防火墙的入站规则中。
二:如果无法确定连接字符串的端口或者SQLServer没有侦听TCP 1433端口,就要把SQLServer Browser服务所侦听的UDP 1434端口添加到Windows防火墙中。这是因为:
a)、如果TCP端口被连接字符串明确指定了,那么像SQL Native Client这样的连接提供程序将会使用这个端口来连接SQLServer,所以此时不需要SQLServer Browser服务去查找SQLServer所侦听的相应端口。
b)、如果端口未被连接字符串显式定义,那么连接提供程序会发送UDP 包到1434端口。所以,如果1434端口没有在Windows防火墙开启的话连接提供程序将得不到SQLServer所侦听的相应的TCP端口。然后,连接提供程序将只用1433来连接SQLServer。如果此时SQLServer未侦听1433端口,则会返回失败。所以也需要将UDP1433端口加入到Windows防火墙的入站规则中。
为了找出SQLServer锁监听的端口,可以使用以下步骤:
1、打开SQLServer 配置管理器
2、在SQLServer网络配置节点下,点击对应实例名的协议。双击TCP/IP→切换到【IP地址】选项卡,你可以从中找到所有SQLServer所侦听的每个IP地址的端口或所有IP地址指定的端口。
注意:如果SQLServer侦听动态端口,将会在每次重启后该表。所以,你必须找到它当前侦听的端口,然后添加到Windows防火墙中。