听说ASP.NET 程序中sql语句用存储过程,并发性的有关问题不用担心?

听说ASP.NET 程序中sql语句用存储过程,并发性的问题不用担心??
为什么啊?如果并发。现在系统开发完成了,该如何整理,防止并发问题的出现呢?大概200人左右用,系统中web控件非常少,
基本都是用html控件+jQuery ajax 完成的 数据 增删改查。。。
------解决方案--------------------
你听说的就不对。存储过程里面也是sql语句。如果里面sql语句写不对,照样并发会出问题,瓶颈。
存储过过程里面通过写事务可以部分并发问题,给你一个事务的例子
begin tran 
begin try 
insert into 我的数据库.dbo.B()
select *
from A where A.Record_ID = (select Record_ID from inserted)
update tb set A=’XX’ where ID=’1’
commit
end try
begin catch
rollback
end catch

------解决方案--------------------
处理并发 还是需要 利用 锁。
------解决方案--------------------
你所谓的“并发性的问题”是指什么呢?

关系数据库系统的数据库操作事务是有一定的隔离级别的,不同数据库系统的默认级别不同。这个要区别对待。不过不知道你说的“并发性”是不是指事务隔离特性。
------解决方案--------------------
引用:
使用存储过程为什么 能控制并发。~~


跟什么“存储过程”没有直接的关系。

当你使用 SqlCommand 对象向SQL Server发送一条执行,那么SQL Server就会默认使用一个数据库事务来执行它。你发送多条指令,那么这多条指令并不在同一个事务中。

但是如果你在多条指令的外边(前后)启用了 SqlTransaction 对象来显式地启用一个事务,那么这多条指令就在同一个数据库事务中处理。

跟存储过程没有直接关系。你使用SqlCommand 发送任何sql语句都可以,而不是仅仅针对执行存储过程的sql语句。
------解决方案--------------------
存储过程中用不着写什么 begin tran 语句,因为它一定是在一个默认的数据库事务中被执行的。

我猜跟你说“使用存储过程来控制并发”的人,可能不知道在.net程序中可以显式地把多条sql命令封装在一个 sqlTransaction 作用范围内吧。他不知道多条sql语句需要发送时怎样在c#代码中指定一个数据库事务,于是他只能想到这样一种结论。

其实可靠的数据库编程中,也可以根本不用什么存储过程,丝毫不会影响数据库事务设计。



------解决方案--------------------
引用:
Quote: 引用:

你所谓的“并发性的问题”是指什么呢?

关系数据库系统的数据库操作事务是有一定的隔离级别的,不同数据库系统的默认级别不同。这个要区别对待。不过不知道你说的“并发性”是不是指事务隔离特性。


并发性难道不是  当多个用户同一时间对同一数据进行操作导致 数据库报错吗?

可以简单的理解成,即使有多个用户同一时间访问同一条数据,数据库也会给他们排队执行的。
------解决方案--------------------
200人用   就不用考虑了
------解决方案--------------------
引用:
Quote: 引用:

200人用   就不用考虑了


不需要考虑并发性问题吧?

只要注意不要死锁,正常用。