Sql Server数据库连接数限制

lit0302 2009-12-24 10:18:41
公司有个小系统(C#编写的),数据库用Sql Server2005 Express Edition .这个版本是有数据连接限制的。
有两个用户A,B,保证用户A肯定有一条数据连接。怎么实现啊
...全文
1460 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lit0302 2010-01-19
  • 打赏
  • 举报
回复
ouc_ajax谢谢,太感谢了。。。。
fengzi8189 2010-01-17
  • 打赏
  • 举报
回复
ouc_ajax 2010-01-17
  • 打赏
  • 举报
回复
公司有个小系统(C#编写的),数据库用Sql Server2005 Express Edition .这个版本是有数据连接限制的。
有两个用户A,B,保证用户A肯定有一条数据连接。怎么实现啊

单独写个获取数据库链接的类,里边放好标示,是哪个用户的! 假如最大链接5个,
那么在以前有4个链接的时候,A再请求就失败,B没有限制!

class ManageConnection
{
public static System.Collections.Generic.List<FixedConnection> list;

public static int MaxConnect = 5;

public static object objForLock = new object();

static ManageConnection()
{
list = new List<FixedConnection>(MaxConnect);
}


public static System.Data.SqlClient.SqlConnection GetConnection(string userName)
{
System.Data.SqlClient.SqlConnection sqlCon ;
lock (objForLock)
{
if (userName == "A" && list.Count >= MaxConnect - 1)
{
throw new OverflowException("没有可用的链接!");
}
sqlCon = new SqlConnection();
FixedConnection fixCon = new FixedConnection(sqlCon, list);
}
return sqlCon;
}

static void sqlCon_StateChange(object sender, StateChangeEventArgs e)
{
if (e.CurrentState == ConnectionState.Closed)
{

}
}


public class FixedConnection
{
private System.Data.SqlClient.SqlConnection conn;

private System.Collections.Generic.List<FixedConnection> list;

public FixedConnection(System.Data.SqlClient.SqlConnection conn, System.Collections.Generic.List<FixedConnection> list)
{
this.conn = conn;
this.list = list;
list.Add(this);
conn.StateChange += new StateChangeEventHandler(conn_StateChange);
}

void conn_StateChange(object sender, StateChangeEventArgs e)
{
if (e.CurrentState == ConnectionState.Closed)
{
this.list.Remove(this);
}
}
}
}
lit0302 2010-01-17
  • 打赏
  • 举报
回复
创建连接数前判断用户是谁或则连接数多少个,这个判断首先就要连接数据库了吧。用户身份还可以保存到SESSION中,可是判断连接数,我只是想到用sql语句判断,这个不是就要连接数据库了,我的连接是即连即断,这样很没意义啊。我同时说可以做个监控器,我没思路
lit0302 2010-01-17
  • 打赏
  • 举报
回复
与SQL Server 2005完全版本不同,SQL Server Express数据库的大小不能超过4G。还有,SQL Server Express只能使用1G内存。另外,即使服务器端有多个处理器,SQL Server Express也只能使用其中一个。
与SQL Server 2000 MSDE不同的是,SQL Server Express没有进行负载控制。SQL Server Express数据库的性能并没有受到限制。也就是说,在小型站点中使用SQL Server Express完全不用担心性能受限制。
http://book.51cto.com/art/200904/119154.htm
lit0302 2010-01-17
  • 打赏
  • 举报
回复
恩,原来如此。那是不是只是效率变差了,还是能打开对吧。
polarissky 2010-01-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lit0302 的回复:]
楼上说的如果是真的,没有连接限制,其实我就不用做什么功能了。
[/Quote]
记得在微软官网上看的是, EXPRESS版本的数据库会限制可用cpu的个数,就是无论是多核CPU运行EXPRESS版本的数据库都是当单核使用,无法发挥效能。对连接没有限制吧。
lit0302 2010-01-17
  • 打赏
  • 举报
回复
楼上说的如果是真的,没有连接限制,其实我就不用做什么功能了。
xray2005 2010-01-15
  • 打赏
  • 举报
回复
EXPRESS版本的就是去了些高级功能。没有连接限制。


如果你可以自己代码实现,一个静态变量记录连接数目,然后每次创建连接的时候去判断,做处理。
  • 打赏
  • 举报
回复
不过LZ也可以考虑这样 就比如说并发数为5,你留一条专线,另外的4条允许他人链接
  • 打赏
  • 举报
回复
LS说的确实应该是一部分 但是不能达到LZ的要求 他可是需要一条专线的
  • 打赏
  • 举报
回复
自己做个数据库连接池,设定链接的上限,这样就能保证了
newdigitime 2010-01-15
  • 打赏
  • 举报
回复
那就做个全局计数器.
譬如B连接一次,在计数器加1,关闭连接则-1.当计数器达到4时,就不允许B再连接了.
glgxw 2010-01-15
  • 打赏
  • 举报
回复
c# 连接 Sql Server的原则是断开。
就是读完数据后立即断开,以不占资源。
没有连接数2个的限制,连接时,记得要共享连接,不要独占连接。
lit0302 2010-01-15
  • 打赏
  • 举报
回复
我同事说做个监控器,监视SQL SERVER的连接数。我也觉得很不实际,也不知道怎么实现。大家看看有没有实现的可能,谢谢了
lit0302 2009-12-24
  • 打赏
  • 举报
回复
不是只能连接两个,假如B用户并发5个,导致用户A打不开网站。这时候要保证最大并发数5个中,其中1条要留给用户A。
我现在思路大概就是判断是不是用户B且连接有没有超过4个,如果超过就不连接了,不知道这样对不对。
fuda_1985 2009-12-24
  • 打赏
  • 举报
回复
不会吧,只能连两个?
你做好关闭与开启connection就差不多了。
再顶多做个缓存!你这种控制太不实际了。
zhulong1111 2009-12-24
  • 打赏
  • 举报
回复
保证用户A肯定有一条数据连接。怎么实现啊 ??
lit0302 2009-12-24
  • 打赏
  • 举报
回复
dingxia

62,026

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧