加入收藏 | 设为首页 | 会员中心 | 我要投稿 南京站长网 (https://www.025zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 最大用户连接数

发布时间:2021-01-14 21:14:18 所属栏目:MsSql教程 来源:网络整理
导读:在SQL Server 2012标准版中,我知道最大用户连接数为32,767.如果我正朝着这个数字迈进,我应该怎么做DBA? 目前有30,000个用户连接,预计这个数字会增加. 解决方法 跨SQL Server版本和版本的 maximum number of connections是32,767. 您可以通过查看以下内容

在SQL Server 2012标准版中,我知道最大用户连接数为32,767.如果我正朝着这个数字迈进,我应该怎么做DBA?

目前有30,000个用户连接,预计这个数字会增加.

解决方法

跨SQL Server版本和版本的 maximum number of connections是32,767.

您可以通过查看以下内容来确定SQL Server当前具有的连接数:

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;

如果涉及来自上述查询的已使用和未使用连接之间的比率,则很可能连接池由连接到服务器的客户端应用程序启用,并且这些连接未被有效使用.您可能希望让开发人员修改这些应用程序的连接字符串,以限制连接池的大小,并确保它们正确地处理连接.如果连接未正确处理,只要客户端应用程序正在运行,它们将保持打开状态.

如果您感觉特别狂热,并且需要摆脱最近没有执行任何操作的所有连接(无论它们当前是否正在执行工作),您可以运行以下代码,这将生成一个会话列表,可以被杀死.您需要将生成的命令复制并粘贴到新的SSMS窗口中以实际运行命令.为了以防万一,我还建议你的简历是最新的.

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;

通过在多个SQL Server节点之间分片数据,可以线性扩展超过32,767的连接数.但是,在我看来,使用分片作为绕过连接数限制的方法类似于使用原子弹杀死蜘蛛.它会杀死蜘蛛,但你可能会在一天结束时遇到更大的问题.更不用说制造原子弹非常难了,更不用说正确实现分片了.

(编辑:南京站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读