背景
这几天想写一个使用java连接sqlserver的数据库连接测试程序。但是在查看数据库连接字符格式以后发现需要sqlserver数据库 服务的端口号。在安装sqlserver的时候也没有提到端口号的问题,以前安装mysql的时候倒是见到过3306这个端口号,安装oracle的时候 1521这个端口号也没有看到。不过oracle连接的时候都用的是1521,比如oracle的的数据库连接字符串格式 为:jdbc:oracle:thin:@localhost:1521:SID。不知道安装两个oracle数据库是否还是1521这个端口号。
通过存储过程查看
闲话莫提,我们直接讲解如何查看端口号。需要提的是在我的机器上安装了sqlserver2008和sqlserver2012两个版本的数据 库。我们首先打开sqlserver management studio(简称SSMS)连接sqlserver2008的数据库实例,然后执行如下存储过程:
--查询端口号exec sys.sp_readerrorlog 0, 1, 'listening'
查询出来的结果如下图所示:
从上图我们可以看出sqlserver2008的端口号是5419。
接下来关闭SSMS,再从重新打开,接着连接sqlserver2012。继续执行上述的存储过程,查询结果如下图所示:
上图说明sqlserver2012的端口号是5413。
通过Sql Server配置管理器(SSCM)
首先打开SSCM,如下图所示:
然后再sqlserver网络配置中开启TCP/IP协议,如下图所示:
在这里我们要将SQLEXPRESS和SQL2012两个协议中的TCP/IP协议都开启。
然后查看TCP/IP协议的属性,如下所示:
如上图所示,我们在IPALL中看到了“TCP动态端口”的值为5419,这就是我们sqlserver2008的端口号。我们打开sql2012的协议查看,发现IPALL属性如下:
sql2012的端口号是5413,这个跟我们用存储过程查出来的端口号一模一样。
通过sp_readerrorlog来查看sql server监听的协议以及端口(补充:2012-9-10)
在SSMS中输入sp_readerrorlog命令来查看sql server信息,回到到如下类似的监听信息:
--tcp协议Server is listening on [ 'any'1500]. Server is listening on [ 'any' 1500]. Server is listening on [ 'any' 1433]. Server is listening on [ 'any' 1433]. Server is listening on [ ::1 1434]. Server is listening on [ 127.0.0.1 1434]. --named pipe协议无法关闭,即使关闭以后也会有local connection provider Server local connection provider is ready to accept connection on [ \\.\pipe\sql\query ]. --share memory Server local connection provider is ready to accept connection on [ \\.\pipe\SQLLocal\MSSQLSERVER ].
这是在关闭named pipe的情况下,如果开启named pipe的话,那么会是如下类型:
--开启named pipeServer named pipe provider is ready to accept connection on [ \\.\pipe\sql\query ].
在sql server是无法关闭本地named pipe协议的。