我想通过Windows防火墙远程连接到SQL Server Express

我有一个安装了SQL Server Express的VPS Windows 2008。 我想从我的电脑访问SQL Server Express数据库。 我可以访问它,当我禁用Windows防火墙,否则我不能。

我从微软那里用这个批来解决这个问题,但是什么也没有发生。

@echo ========= SQL Server Ports =================== @echo Enabling SQLServer default instance port 1433 netsh firewall set portopening TCP 1433 "SQLServer" @echo Enabling Dedicated Admin Connection port 1434 netsh firewall set portopening TCP 1434 "SQL Admin Connection" @echo Enabling conventional SQL Server Service Broker port 4022 netsh firewall set portopening TCP 4022 "SQL Service Broker" @echo Enabling Transact-SQL Debugger/RPC port 135 netsh firewall set portopening TCP 135 "SQL Debugger/RPC" @echo ========= Analysis Services Ports ============== @echo Enabling SSAS Default Instance port 2383 netsh firewall set portopening TCP 2383 "Analysis Services" @echo Enabling SQL Server Browser Service port 2382 netsh firewall set portopening TCP 2382 "SQL Browser" @echo ========= Misc Applications ============== @echo Enabling HTTP port 80 netsh firewall set portopening TCP 80 "HTTP" @echo Enabling SSL port 443 netsh firewall set portopening TCP 443 "SSL" @echo Enabling port for SQL Server Browser Service's 'Browse' Button netsh firewall set portopening UDP 1434 "SQL Browser" @echo Allowing multicast broadcast response on UDP (Browser Service Enumerations OK) netsh firewall set multicastbroadcastresponse ENABLE 

谢谢

听起来像SQL Server没有安装使用默认端口。 我记得SQL Express用来做这件事,因为它安装了一个命名的实例而不是未命名的默认。

打开SQL Serverconfigurationpipe理器并检查以下设置:

  1. 展开左窗格中的“SQL Servernetworkingconfiguration”,然后针对您的实例(可能是SQLEXPRESS)的“协议”节点:是否启用了TCP / IP?

  2. 右键单击/属性TCP / IP节点,selectIP地址选项卡; find与要连接的networking接口匹配的IPn部分(或滚动到任何/所有接口的IPAll部分):TCPdynamic端口字段中是否有一个数字? 您需要清除此字段,并根据您运行的批处理脚本将TCP端口字段设置为“1433”(不含引号)

  3. 点击左侧窗格中的“SQL Server Services”:确认“SQL Server Browser”服务正在运行/自动运行。 改变它,如果没有。

在运行之前,您是否审阅了批处理脚本? 它开放的端口比我通常用于“面向公众的”SQL Server要多得多 – 除非你运行的是IIS或Reporting Services,否则不需要TCP / 80和TCP / 433,除非你希望能够使用TCP / 1434在紧急情况下通过networking访问服务器,TCP / 135是RPC,我想说你当然不希望人们能够通过互联网访问。

如果通过VPS,你的意思是你有一个直接连接,面向互联网的服务器,你从远程访问,你真的想看看获得一个VPN或SSH服务,你可以启用此访问,而留下的大部分仍然被互联网阻止。

netsh防火墙设置portopening TCP 1433“SQLServer”

不会工作 – 1433 TCP是默认实例。 你必须对端口进行硬编码,然后使用它或打开防火墙(高级防火墙可以做到这一点)的可执行文件(所以它得到它所需要的)。