我想知道SQL Server数据库引擎使用了哪些端口?我需要这样的端口号来编写配置脚本,以授予对安装了SQL Server的计算机的特定端口的访问权限,以使其安全。一个相关的问题是SQL Server数据库引擎是使用一个静态端口号来为所有客户端请求提供服务,还是为每个请求使用一个端口?
BTW:我的背景是SQL Server 2008企业。
提前谢谢, 乔治答案 0 :(得分:10)
默认情况下,默认实例将侦听tcp / 1433。它也可能监听命名管道(tcp / 445) - 但我认为这些天必须明确启用。
命名实例(如SQLEXPRESS)侦听动态端口。动态端口由客户端通过SQL Server解析协议(又称SQL浏览器)解析 - 它侦听udp / 1434 1 。此动态端口在首次启动时选择,并且通常在将来重新启动(存储在注册表中)时保持不变 - 但如果存在争用,SQL将选择新端口。
您可以并且通常应该将生产SQL服务器的所有实例配置为使用静态端口。这使得防火墙更多更容易。
1 您必须将命名实例放入连接字符串的唯一原因是客户端知道要求SSRP提供动态端口。如果它是静态或其他已知端口,您只需将客户端指向Server=server.com:port
,而不要使用实例名称。
答案 1 :(得分:5)
一种非常简单和编程的方法是只查询sys.dm_exec_connections中的local_tcp_port列:
select local_tcp_port from sys.dm_exec_connections where local_tcp_port is not null
如果没有返回结果,那么可能是因为服务器在这台机器上并且没有来自其他机器的连接,所以没有tcp连接。
在这种情况下,如果您使用sqlcmd进行查询,则只需将“tcp:”放在服务器名称前面,例如
sqlcmd -E -S tcp:(local)
或者,如果您使用SqlClient进行连接,则可以添加“Network Library = dbmssocn”来强制使用tcp,例如
string connStr = "Server=(local); Integrated Security=true; Network Library=dbmssocn";
答案 2 :(得分:4)
1433是SQL Server默认使用的。它起码至少是SQL Server 6.0。
通常,出于安全考虑,您不希望向全世界开放。人们应该通过应用程序/ Web服务访问您的数据库 。管道上的直接SQL Server连接充满了安全隐患。
所有会话都将使用此端口(网站的端口80),但您可以使用SQL Server配置工具更改它,描述为here。
答案 3 :(得分:1)
:1433是默认。但是,可以更改此端口,如果您正在处理多个实例,则每个实例都将具有不同的端口。
快速Google搜索会显示以下链接:
......我相信Technet会有更多信息。
答案 4 :(得分:1)
有时端口不是1433
来自http://www.php.net/manual/en/function.mssql-connect.php#76256 使用HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ SQLEXPRESS \ MSSQLServer \ SuperSocketNetLib \ Tcp中的regedit.exe在注册表中查找。
其中一个nameValue对具有名称TcpPort和一个值,即SQL Server正在侦听的端口。