我使用Azure-Server。把我的数据库托管在那里,并在上面使用实体框架(C#)。我使用标准S3层。此定价层限制为200到DB.的并发连接。
我的系统工作在微服务架构中。我的每个服务都有到DB的开放连接。
这就是我的连接字符串的样子
metadata=res:///Model1.csdl|res:///Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="Data Source=mydb.database.windows.net;Initial Catalog=production;Persist Security Info=True;User ID=user@my;Password=mypass;Pooling=true;Max Pool Size=2;Enlist=false;
我不时地监视到我的数据库的连接数量。
通过使用
SELECT DB_NAME(eS.database_id) AS the_database, eS.is_user_process, COUNT(eS.session_id) AS total_database_connections
FROM sys.dm_exec_sessions eS
GROUP BY DB_NAME(eS.database_id)
, eS.is_user_process
ORDER BY 1, 2;
END这给了我一个结果:

如果我把所有的连接加起来,我就得到215个连接的结果。这可能会与我不时发现的一些连接限制保持一致。
谢谢!
发布于 2018-06-12 20:44:14
您所看到的is_user_process =0的会话是由Azure监视和警报启动的会话,它们不被视为会话层限制的一部分,它们可以安全地被忽略。2017年晚些时候,数据库引擎团队删除了隐藏这些类型的后端会话/连接的过滤器。删除此锁定的原因是为了提高连接到数据库的会话的可见性。有关更多信息,请阅读论坛帖子上的这里 Devin Rider文章。
请只监视您的用户数据库的会话数量,而不考虑那些后端会话。
SELECT *
FROM sys.dm_exec_sessions s, sys.databases d
WHERE s.database_id =d.database_id
and d.name='youruserdatabase'https://stackoverflow.com/questions/50817553
复制相似问题