Die maximale Anzahl von Verbindungen zwischen SQL Server-Versionen und -Editionen beträgt 32.767.
Sie können feststellen, über wie viele Verbindungen SQL Server derzeit verfügt:
SELECT ConnectionStatus = CASE WHEN dec.most_recent_sql_handle = 0x0
THEN 'Unused'
ELSE 'Used'
END
, CASE WHEN des.status = 'Sleeping'
THEN 'sleeping'
ELSE 'Not Sleeping'
END
, ConnectionCount = COUNT(1)
FROM sys.dm_exec_connections dec
INNER JOIN sys.dm_exec_sessions des ON dec.session_id = des.session_id
GROUP BY CASE WHEN des.status = 'Sleeping'
THEN 'sleeping'
ELSE 'Not Sleeping'
END
, CASE WHEN dec.most_recent_sql_handle = 0x0
THEN 'Unused'
ELSE 'Used'
END;
Wenn das Verhältnis zwischen verwendeten und nicht verwendeten Verbindungen aus der obigen Abfrage betroffen ist, wird das Verbindungspooling wahrscheinlich von Clientanwendungen aktiviert, die mit dem Server verbunden sind, und diese Verbindungen werden nicht effizient genutzt. Möglicherweise möchten Sie, dass Entwickler die Verbindungszeichenfolge für diese Anwendungen ändern, um die Größe des Verbindungspools zu begrenzen und sicherzustellen, dass die Verbindungen ordnungsgemäß verteilt werden. Wenn Verbindungen nicht ordnungsgemäß hergestellt werden, bleiben sie geöffnet, solange die Clientanwendung ausgeführt wird.
Wenn Sie sich besonders tollwütig fühlen und alle Verbindungen entfernen müssen, die in letzter Zeit noch nichts ausgeführt haben (unabhängig davon, ob sie tatsächlich gerade arbeiten), können Sie den folgenden Code ausführen, der eine Liste der Sitzungen generiert, die dies bewirken kann getötet werden. Sie müssen die generierten Befehle kopieren und in ein neues SSMS-Fenster einfügen, um die Befehle tatsächlich auszuführen. Ich würde auch empfehlen, Ihren Lebenslauf für alle Fälle auf dem neuesten Stand zu halten .
DECLARE @cmd NVARCHAR(MAX);
SET @cmd = '';
SELECT @cmd = @cmd +
CASE WHEN @cmd = '' THEN '' ELSE CHAR(13) + CHAR(10) END
+ 'KILL ' + CONVERT(VARCHAR(MAX), dec.session_id) + ';'
FROM sys.dm_exec_connections dec
WHERE dec.most_recent_sql_handle = 0x0;
PRINT @cmd;
Es ist möglich, die Anzahl der Verbindungen über 32.767 hinaus linear zu skalieren, indem die Daten über mehrere SQL Server-Knoten verteilt werden. Meiner Meinung nach ähnelt die Verwendung von Splittern jedoch der Verwendung einer Atombombe, um eine Spinne zu töten. Es wird die Spinne töten, aber Sie könnten am Ende des Tages größere Probleme haben. Ganz zu schweigen davon, dass es verdammt schwer ist, eine Atombombe zu bauen, ganz zu schweigen davon, dass das Scherben von Arbeitsgeräten richtig ist.