设置最大连接数
创新互联为您提适合企业的网站设计 让您的网站在搜索引擎具有高度排名,让您的网站具备超强的网络竞争力!结合企业自身,进行网站设计及把握,最后结合企业文化和具体宗旨等,才能创作出一份性化解决方案。从网站策划到成都网站制作、成都网站建设、外贸营销网站建设, 我们的网页设计师为您提供的解决方案。
下面的T-SQL 语句可以配置SQL Server 允许的并发用户连接的最大数目。
exec sp_configure 'show advanced options', 1
exec sp_configure 'user connections', 100
第一句用以表示显示sp_configure 系统存储过程高级选项,使用user connections 时,要求show advanced options 值为1。
第二句配置最大连接数为100,0 表示不限制,但不表示无限,后面将谈谈。
也可以在企业管理器中配置,在企业管理器中,可以在实例上点右键-“属性”-“连接”里面更改。
需要重新启动SQL Server,该值才会生效。
@@max_connections
select @@max_connections
它总是返回32767,它并不是指上面设置的user connections,实际上它表示user connections 最大可设置为多少。由于它的最大值是32767,那么user connections 为0 时,最大连接数也就是32767 了,并不是无限。
默认情况下user connections 值是0,也就是说默认情况下SQL Server 的最大连接数是32767。
获得当前设置的最大连接数:
select value from master.dbo.sysconfigures where [config]=103
1)不启用连接池
当创建到101个连接的时候,就无法再创建新连接了。也就是说,如果连接字符串不做任何处理,我们的程序只能够跟SQLServer建立101个连接。
2)启用连接池
在连接字符串中加入代码:
Pooling=true;Max Pool Size=40000;Min Pool Size=0;
微软在MSDN上对最大连接数的定义是:“默认是0,代表不限制,但最大连接数是32767
1.通过管理工具
开始-管理工具-性能(或者是运行里面输入
mmc)然后通过添加计数器添加
SQL
的常用统计
然后在下面列出的项目里面选择用户连接就可以时时查询到数据库的连接数了。不过此方法的话需要有访问那台计算机的权限,就是要通过Windows账户登陆进去才可以添加此计数器。
2.通过系统表查询
SELECT * FROM
[Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN ( SELECT
[DBID]
FROM
[Master].[dbo].[SYSDATABASES]
WHERE
NAME='DBName'
)
DBName
是需要查看的数据库,然后查询出来的行数,就是当前的连接数。不过里面还有一些别的状态可以做参考用。
例如:连到master这个数据库写如下语句
select * from sysprocesses where dbid in (select dbid from sysdatabases where name='MyDatabase')
将所有连接MyDatabase这个数据库的连接记录都求出来。
sysprocesses这个表记录所以连接到SQL
SERVER数据库的连接。
3.通过系统的存储过程来查找
SP_WHO 'UserName'
UserName
是当然登陆Sql的用户名,一般程序里面都会使用一个UserName来登陆SQL这样通过这个用户名就能查看到此用户名登陆之后占用的连接了。
如果不写UserName,那么返回的就是所有的连接。
1、获取SQL Server允许同时用户连接的最大数
SELECT @@MAX_CONNECTIONS
2、获取当前指定数据库的连接信息
SELECT * FROM master.dbo.sysprocesses WHERE dbid IN
(
SELECT dbid FROM master.dbo.sysdatabases
WHERE NAME='YourDataBaseName'
)
--根据需要更改YourDataBaseName
SELECT * FROM master.dbo.sysprocesses WHERE DB_NAME(dbid) = 'YourDataBaseName'
3、获取当前SQL服务器所有的连接详细信息
SELECT * FROM sysprocesses
以上查询结果包含了:系统进程和用户进程。
如果只是想查用户进程的话则需采用下面的方法
4、获取自上次启动 SQL Server服务 以来连接或试图连接的次数
SELECT @@CONNECTIONS
这个刚开始会有点误解,认为是当前SQL Server服务器当前所有的连接数。需要重点注意。
打开 SQL Server Management Studio Express 使用超级用户登录。
输入如下指令:
exec sp_configure 'show advanced options', 1
exec sp_configure 'user connections', 100
select value from master.dbo.sysconfigures where [config]=103
--第二次设置用户并发连接200
exec sp_configure 'show advanced options', 1
exec sp_configure 'user connections', 200
select value from master.dbo.sysconfigures where [config]=103
返回结果
100
200
也就是说 你设置成100 就100,设置成200就200, 最大是 32767, 设置成 0 就是32767.
0 表示不受限。但是 sql检索是返回0的。
---
以上只是理论:
实际上一般的小型服务器 能并行 60 就相当了不起了。
至强八核的CPU ,8G服务器内存 ,2003 系统 ,设置成 0 ,采用压力测试了一番 最高也就 104上下。跟操作系统和硬件配置有关系的。