MSSQL 2016: достигнут максимальный лимит подключений

Microsoft.SQLServer.2016.Maximum_limit_for_connections_has_been_reached_1_5_Rule (Rule)

По умолчанию SQL Server динамически управляет памятью, необходимой для пользовательских подключений. Тем не менее, может быть установлено фиксированное значение максимального количества соединений с помощью задания параметра конфигурации пользовательских подключений на значение, отличное от 0. Установка параметра пользовательских подключений в значение, отличное от 0, не рекомендуется. Если этот параметр установлен в ненулевое значение то при превышении определенного количества соединений, дополнительные попытки входа не будут выполнены, возникнет указанная выше ошибка. Если значение равно 1, экземпляр SQL Server может не запуститься.

Knowledge Base article:

Сводка

По умолчанию SQL Server динамически управляет памятью, необходимой для пользовательских подключений. Тем не менее, может быть установлено фиксированное значение максимального количества соединений с помощью задания параметра конфигурации пользовательских подключений в значение, отличное от 0. Установка параметра пользовательских подключений в значение, отличное от 0, не рекомендуется. Если этот параметр установлен в ненулевое значение то при превышении определенного количества соединений, дополнительные попытки входа не будут выполнены, возникнет указанная выше ошибка. Если значение равно 1, экземпляр SQL Server может не запуститься.

Решения

Если SQL Server работает и вы уже подключены в роли системного администратора, то введите следующие команды, чтобы сбросить опцию подключения пользователя к значению по умолчанию 0 (динамически):

sp_configure 'user connections', 0

go

reconfigure with override

Чтобы изменения вступили в силу, необходимо перезапустить экземпляр SQL Server.

Если SQL Server не запускается или если вы не можете использовать одно из существующих подключений, вам нужно будет запустить экземпляр SQL Server в минимальной конфигурации и сбросить опцию подключения пользователя к значению по умолчанию 0 (динамически).

sp_configure 'user connections', 0

go

reconfigure with override

Переопределяемые параметры

Название

Описание

Значение по умолчанию

Включено

Включает или отключает рабочий процесс.

Да

Приоритет

Определяет приоритет предупреждения.

1

Серьезность

Определяет серьезность предупреждения.

1

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID17809
Event Source$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016: достигнут максимальный лимит подключений
{0}
Event LogApplication
CommentMom2016ID='{A9344B04-ED2A-4F54-B91D-CC99D35469F1}';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.Maximum_limit_for_connections_has_been_reached_1_5_Rule" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2016ID='{A9344B04-ED2A-4F54-B91D-CC99D35469F1}';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>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>17809</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2016.Maximum_limit_for_connections_has_been_reached_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>