MSSQL 2016: The Service Broker/Database Mirroring transport cannot listen on port because it is in use

Microsoft.SQLServer.2016.The_Service_Broker_Database_Mirroring_transport_cannot_listen_on_port_because_it_is_in_use_5_Rule (Rule)

When you create a Service Broker or Database Mirroring endpoint, SQL Server should be able to accept TCP/IP connections on the port that is specified in the endpoint configuration. The transport security requires authorization for connections to the port. If the server has a firewall enabled, the firewall configuration must allow both incoming and outgoing connections for the port that is used by the endpoint.

Knowledge Base article:

Summary

When you create a Service Broker or Database Mirroring endpoint, SQL Server should be able to accept TCP/IP connections on the port that is specified in the endpoint configuration. The transport security requires authorization for connections to the port. If the server has a firewall enabled, the firewall configuration must allow both incoming and outgoing connections for the port that is used by the endpoint.

In this case, specified port is not available because it is in use.

Causes

Another program on the computer is using the TCP port indicated. The Windows application log specifies whether the error was logged by Service Broker or Database Mirroring. This message is logged in the Windows application log as MSSQLSERVER event ID 9692.

Resolutions

Run netstat -aon from the command prompt to determine what program is using the port.

You can disable the application that is using the port or you can specify a different port in the Service Broker application.

External

See "ALTER ENDPOINT (Transact-SQL)" in SQL Server 2016 Books Online.

Overrideable Parameters

Name

Description

Default Value

Enabled

Enables or disables the workflow.

Yes

Priority

Defines Alert Priority.

1

Severity

Defines Alert Severity.

2

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID9692
Event Source$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016: The Service Broker/Database Mirroring transport cannot listen on port because it is in use
{0}
Event LogApplication
CommentMom2016ID='{BEE972D8-4422-4CFD-BC7D-B1035EA67E9D}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.Windows.EventProvider Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.2016.The_Service_Broker_Database_Mirroring_transport_cannot_listen_on_port_because_it_is_in_use_5_Rule" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2016ID='{BEE972D8-4422-4CFD-BC7D-B1035EA67E9D}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>9692</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2016.The_Service_Broker_Database_Mirroring_transport_cannot_listen_on_port_because_it_is_in_use_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>