连接数问题
系统变量
@@CONNECTIONS 返回自上次启动 Microsoft® SQL Server™ 以来连接或试图连接的次数。
@@MAX_CONNECTIONS 返回 Microsoft® SQL Server™ 上允许的同时用户连接的最大数。返回的数不必为当前配置的数值。
系统存储过程
SP_WHO
提供关于当前 Microsoft® SQL Server™ 用户和进程的信息。可以筛选返回的信息,以便只返回那些不是空闲的进程。
列出所有活动的用户:SP_WHO ‘active’
列出某个特定用户的信息:SP_WHO ‘sa’
系统表
Sysprocesses
sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息。这些进程可以是客户端进程或系统进程。sysprocesses 只存储在 master 数据库中。
Sysperfinfo
包括一个 Microsoft® SQL Server™ 表示法的内部性能计数器,可通过 Windows NT 性能监视器显示.
连接池、连接数、进程数联系:
一个连接池有多个连接数,一个连接有可能有多个进程数
获取进程数
select * from sysprocesses where dbid in
(select dbid from sysdatabases where name='mondaystart')
如果连接没有关闭会一直留在进程表里,如果连接关闭后,在进程表会释放资源(一定时间内)。
进程 ID 状态。可能的值有:
dormant = SQL Server 正在重置会话。
running = 会话正在运行一个或多个批。多个活动的结果集 (MARS) 启用后,会话可以运行多个批。有关详细信息,请参阅Using Multiple Active Result Sets (MARS)。
background = 会话正在运行一个后台任务,例如死锁检测。
rollback = 会话具有正在处理的事务回滚。
pending = 会话正在等待工作线程变为可用。
runnable = 会话中的任务在等待获取时间量程时位于计划程序的可执行队列中。
spinloop = 会话中的任务正在等待调节锁变为可用。
suspended = 会话正在等待事件(如 I/O)完成。
在WEB。CONFIG中设置连接数
<connectionStrings>
<add name="MondayStart" connectionString="Data Source=192.168.0.11;Initial Catalog=MondayStart_New;User Id=sa;Password=start;Max Pool Size=300;Connect Timeout=300;Packet Size=8192;" providerName="System.Data.SqlClient"/>
</connectionStrings>
Max Pool Size 最大连接数:300
连接池连接可以显著提高应用程序的性能和可缩放性。SQL Server .NET Framework 数据提供程序自动为 ADO.NET 客户端应用程序提供连接池。您也可以提供几个连接字符串修饰符来控制连接池行为
使用连接字符串关键字控制连接池
名称 | 默认值 | 说明 |
---|---|---|
Connection Lifetime | 0 | 当连接返回到池中时,将对它的创建时间和当前时间进行比较,如果时间间隔超过由 Connection Lifetime 指定的值(以秒为单位),则会毁坏该连接。在聚集配置中可以使用它来强制在运行服务器和刚联机的服务器之间达到负载平衡。
如果值为零 (0),则将使池连接具有最大的超时期限。 |
Connection Reset | 'true' | 确定在从池中移除数据库连接时是否将其重置。对于 Microsoft SQL Server 版本 7.0,如果设置为 false,将避免在获取连接时经历一个额外的往返过程,但必须注意的是连接状态(如数据库上下文)不会被重置。 |
Enlist | 'true' | 当为 true 时,如果存在事务上下文,池管理程序将自动在创建线程的当前事务上下文中登记连接。 |
Max Pool Size | 100 | 池中允许的最大连接数。 |
Min Pool Size | 0 | 池中维护的最小连接数。 |
Pooling | 'true' | 当为 true 时,将从相应的池中取出连接,或者在必要时创建连接并将其添加到相应的池中。 |