Service Broker需要端口

时间:2011-11-29 18:28:13

标签: sql sql-server service-broker

有没有人知道是否有一个端口必须在SQL服务器上打开以允许服务代理流量?我们正在测试当你关闭SQL服务器上的所有端口(1433,445,3389)以及查询通知仍然有效时会发生什么。我们的印象是,必须打开4022服务代理才能使用默认侦听端口。

是否有SQL系统视图显示服务代理正在进行通信的端口?

是否有命令终止数据库上的所有活动查询通知,以便可以删除数据库?

由于

3 个答案:

答案 0 :(得分:3)

来自How to: Activate Service Broker Networking (Transact-SQL)

  

Service Broker不会通过网络发送或接收消息   默认。要在实例中激活Service Broker网络,请创建   Service Broker的端点。

创建端点时,您专门指定要使用的端口:

CREATE ENDPOINT BrokerEndpoint
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 4037 )
    FOR SERVICE_BROKER ( AUTHENTICATION = WINDOWS );

Service Broker与其他代理实例通信时使用端口4022。你是如何使用Service Broker的?如果所有工作都在数据库内部,那么它永远不需要使用TCP端点。

答案 1 :(得分:3)

如果您的服务代理体系结构在服务器(端点)之间传递消息,那么它将需要除普通SQL端口之外的端口。

如果客户端代码(如查询通知)正在访问服务代理,则它会通过标准SQL连接使用SQL语句(带有一些新语法),并且此部分不使用任何其他端口。

答案 2 :(得分:3)

查询通知不需要Service Broker端点,因为它始终在本地传递消息,在您启动通知的同一个DB中。尽管将QN配置为向远程计算机发送通知是可能的,但基本上是闻所未闻的。请参阅The Mysterious Notification

至于问题:Service Broker只需要打开配置的端点端口。您可以在sys.tcp_endpoints中看到侦听端口。 如果配置的身份验证是Windows,则还需要Kerberos / NTLM(135,?389)所需的端口,以便对SSB连接进行身份验证。请注意,SSB所需的SMB端口(445)。如果SSB端点配置的身份验证是证书,则不需要其他端口。请参阅How does Certificate based Authentication work