我有一个安装了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理器并检查以下设置:
展开左窗格中的“SQL Servernetworkingconfiguration”,然后针对您的实例(可能是SQLEXPRESS)的“协议”节点:是否启用了TCP / IP?
右键单击/属性TCP / IP节点,selectIP地址选项卡; find与要连接的networking接口匹配的IPn部分(或滚动到任何/所有接口的IPAll部分):TCPdynamic端口字段中是否有一个数字? 您需要清除此字段,并根据您运行的批处理脚本将TCP端口字段设置为“1433”(不含引号)
点击左侧窗格中的“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是默认实例。 你必须对端口进行硬编码,然后使用它或打开防火墙(高级防火墙可以做到这一点)的可执行文件(所以它得到它所需要的)。