sql-server – 最大用户连接数
在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; 通过在多个SQL Server节点之间分片数据,可以线性扩展超过32,767的连接数.但是,在我看来,使用分片作为绕过连接数限制的方法类似于使用原子弹杀死蜘蛛.它会杀死蜘蛛,但你可能会在一天结束时遇到更大的问题.更不用说制造原子弹非常难了,更不用说正确实现分片了. (编辑:南京站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |