问题描述:
同一台服务器上,装有SQL Server 2008 Server Side 和SQL Server 2005 Server Side,2005先安装,实例名为默认命名,2008后安装,实例名为SQL2008,配置好2008的远程连接以后(和2005有些许不同,详见附录),发现内网连接正常,外网始终无法连接。
解决方案:
2005和2008不能公用1433端口,否则其中一个的sql服务无法启动,所以将2008设置是应用另外一个端口,如1000
使用地址 ServerIP(or ServerName)\InstanceName(SQL2008 here),Port(1000 here)就可以正常访问了
思考:
内网访问的时候不加端口号也能访问,证明内网可以自动检测所有端口,而外网就不行了,但是需要注意的是,如果在内网,不加端口号的话,使用过程中可能出现一些莫名其妙的问题(例如,打开某数据库的Database Diagram,新建一个表之后将该表删除,再重建一个同名表的时候将会提示指定表已被标记为删除,不能在Database Diagram中打开或者新建,还有,如果对现有表更改名称,再试图在Database Diagram中添加表,添加的表仍然是显示修改前的名称)
附录:
配置启用TCP/IP和Name Pipe的过程直接在Sql Server Configuration Manager中Enable,其他配置同2005
SQL Server在安装到服务器上后,由于出于服务器安全的需要,所以需要屏蔽掉所有不使用的端口,只开放必须使用的端口。下面就来介绍下SQL Server 2008中使用的端口有哪些:
首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果我们要远程连接数据库引擎,那么就需要打开该端口。这个端口是可以修改的,在“SQL Server配置管理器”中切换到“XXX的协议”里面选择,TCP/IP协议属性中可以设置TCP端口。如图所示: