在安全管控中,经常提到修改默认的1433监听端口,服务器端更改后,是否也意味着客户端的连接串里面也需要指定修改后的端口呢。能否给个例子。

解决方案 »

  1.   

    Data Source=202. 110.25.112,3533用逗号隔开
      

  2.   


    tks,这个链接里面也有相关内容,可以参考。http://www.databasejournal.com/features/mssql/article.php/3689846/Using-Non-Standard-Port-for-SQL-Server.htm
      

  3.   

    如果客户端是使用实例名连接的例如 IP\实例名或IP(省略默认实例名)而且服务器端的SQL SERVER Browser 服务启动,修改端口号不会影响客户端的连接。这也是动态端口可以被正确连接的原因,参考
    SQL Server 浏览器工作原理
    启动一个 SQL Server 实例后,如果为 SQL Server 启用了 TCP/IP 或 VIA 协议,服务器将被分配一个 TCP/IP 端口。如果启用了 Named Pipes 协议,SQL Server 将侦听特定的命名管道。该特定实例将使用此端口(或“管道”)与客户端应用程序交换数据。在安装过程中,TCP 1433 端口和管道 \sql\query 将分配给默认实例,但服务器管理员可以随后使用 SQL Server 配置管理器进行更改。由于只有一个 SQL Server 实例可以使用端口或管道,因此,会将不同的端口号和管道名称分配给命名实例,包括 SQL Server Express。默认情况下,命名实例和 SQL Server Express 在启用时便配置为使用动态端口,也就是说,当 SQL Server 启动时就分配了可用端口。如果需要,可以为 SQL Server 实例分配特定端口。连接时,客户端可以指定特定端口,但是如果端口是动态分配的,端口号可能会在重新启动 SQL Server 时被更改,因此正确的端口号对于客户端来说是不确定的。启动后,SQL Server 浏览器将启动并使用 UDP 1434 端口。SQL Server 浏览器将读取注册表,识别计算机上的所有 SQL Server 实例,并注明它们使用的端口和命名管道。当一台服务器具有两个或多个网卡时,SQL Server 浏览器会为 SQL Server 返回其遇到的第一个已启用的端口。SQL Server 浏览器支持 ipv6 和 ipv4。当 SQL Server 客户端请求 SQL Server 资源时,客户端网络库将使用 1434 端口向服务器发送一条 UDP 消息。SQL Server 浏览器将用请求的实例的 TCP/IP 端口或命名管道做出响应。然后,客户端应用程序中的网络库将使用所需实例的端口或命名管道向服务器发送请求来完成连接。
      

  4.   

    是。因为您提到修改默认端口,意味着这不是命名实例所配置的管道或者动态端口。而对于非默认端口的客户端连接有三种方式,正如2F的链接中所说的。其中1F的说明是客户端的配置文件中可以指定非默认的端口,而对于别名的使用是另外的方式,比如用SSMS登录时。很典型的例子是我们在连接非默认端口的远程SERV的默认实例时,这里的远程SERV并不是指一个LAN或者VLAN内的机器,此时用添加别名作为SSMS的连接地址是非常棒的。同时,在当今的web应用中,通常会部署web前端和DBserv分别在不同城市的不同机房中,比如web前端会在一个申请的虚拟空间中,此时它的连接可以采用1F的方式,但是对于安全性来说,某些有特别想法的人可能会希望知道这个prot,此时我通常会建议在DBserv端做别名来取代1F的方式,这样得到这个prot会不那么容易。