server是买腾讯云的CVM,关闭防火墙,用SSMS可以正常连接到SQL SERVFER, 启用防火墙就不行, 查阅很多资料, 最终答案在MS的文档里,参考这篇:
第一种方法,摘录如下:
使用高级安全 Windows Defender 防火墙向防火墙添加程序例外
从“开始”菜单键入 wf.msc 。 按 Enter 或选择搜索结果 wf.msc 打开“高级安全 Windows Defender 防火墙”。
在左窗格中,选择“入站规则” 。
在右窗格的“操作”下,选择“新建规则...”。“新建入站规则向导”随即打开。
在“规则类型”中,选择“程序” 。 选择“下一页”。
在“程序”中,选择“此程序路径” 。 选择“浏览”,找到 SQL Server 实例 。 该程序名为 sqlservr.exe。 通常位于:
C:\Program Files\Microsoft SQL Server\MSSQL15.<InstanceName>\MSSQL\Binn\sqlservr.exe
选择“下一页”。
在“操作”上,选择“允许连接”。 选择“下一页”。
在“配置文件”上,包括所有三个配置文件。 选择“下一页”。
在“名称” 中键入规则的名称。 选择“完成” 。
第二种方法:还是使用微软文档的建议
netsh advfirewall firewall add rule name = SQLPort dir = in protocol = tcp action = allow localport = 1433 remoteip = localsubnet profile = DOMAIN
但是我这样设置后不起作用, 后来仔细查看, 发现问题出在 remoteip = localsubnet , 我在外网用陌生IP连入, 所以这样设置会被拒绝, 正确的设置应当是允许所有IP.可惜不知道用哪个参数,于是我用了笨办法, 在命令行执行完上述语句后, 再执行 wf.msc , 打开防火墙设置界面
双击SQLPort , 进入设置,选择作用域,注意把“远程IP地址”,设置为“任何IP地址”,这是第一个关键,因为我在外网,不是特定的网段内。 第二要点是高级里,指定配置文件,“公用”要选上。 二者配置完毕后, 就可以顺利用SSMS从家里访问腾讯云上的SQL SERVER了
如果还不行,就看看自己的腾讯云安全组设置,我设置为全通过,如下图