在Azure-Sql数据库上运行连接到" Master"

时间:2018-06-12 12:43:06

标签: c# sql sql-server azure azure-sql-database

我使用的是Azure-Sql-Server。在那里托管我的数据库并在其上使用Entity-Framework(C#)。我使用Standart S3层。 此定价层限制为200个并发连接到数据库。

我的系统在微服务架构中工作。我的每个服务都与DB有开放连接。

这是我的连接字符串是什么样的

  

元数据= RES:// /Model1.csdl|res:// /Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider   连接字符串="数据源= mydb.database.windows.net;初始   目录=生产;持久安全信息=真;用户   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

给了我结果:

enter image description here

如果我对所有连接求和,则得到总共215个连接的结果。这可能与我不时发现的一些连接限制一致。

  1. 问题是所有这些连接是什么"非用户进程"到"掌握"? (111个连接)谁问他们?谁需要他们?怎么找?
  2. 上面的所有连接是否都是200连接限制的一部分?
  3. 谢谢!

1 个答案:

答案 0 :(得分:2)

您看到的那些会话is_user_process = 0是由Azure监控和警报启动的会话,它们不计入会话层限制的一部分,可以安全地忽略它们。 2017年晚些时候,数据库引擎团队删除了隐藏这些类型的后端会话/连接的过滤器。删除此锁定的原因是,您可以提高对连接到数据库的会话的可见性。有关更多信息,请阅读here Devin Rider(MSFT)在论坛帖子中的贡献。

请仅监控用户数据库的会话数,不要考虑这些后端会话。

SELECT *
FROM sys.dm_exec_sessions s, sys.databases d
WHERE s.database_id =d.database_id
and d.name='youruserdatabase'