关于SQL Server死锁
transaction 1:
------------------------------------------------------
begin transaction
update table1 set cola = 'str1'
Waitfor time '10:12:00'
update table2 set colb = 'str2'
rollback transaction
transaction 2:
------------------------------------------------------
begin transaction
update table2 set colb = 'str2'
Waitfor time '10:12:00'
update table1 set cola = 'str1'
rollback transaction
同时运行这两个事务,将导致死锁。(先创建table1和table2,并插入一些值;waitfor time 适当修改)
SQL Server本身会处理死锁,通过选择一个死锁牺牲品,回滚死锁牺牲品的事务,来避免死锁。
SQL Server在上面这两个事务中自动选择一个作为死锁牺牲品,该事务将收到如下消息:
------------------------------------------------------
Msg 1205, Level 13, State 56, Line 7
事务(进程 ID 52)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。
SQL Server选择死锁牺牲品根据的是代价最小原则,用户也可以通过设置DEADLOCK_PRIORITY选项进行干预。
例如,在事务1 set DEADLOCK_PRIORITY low,在事务2 set DEADLOCK_PRIORITY high,则发生死锁时SQL Server将选择事务1作为死锁牺牲品。
如何避免死锁:
1. 多个并发事务按照同样的顺序访问对象
2. 在事务中避免用户交互
3. 尽量缩短事务的执行时间,客户端不应把一个事务分成多次发送。
4. 设置更低的隔离级别
5. 使用捆绑连接
相关文档:
下载后解压缩就能直接使用了,但是是中文的,字体显示的不是很好,于是找到了换英文的办法:
由于1.5包含了多语言界面的支持,但是它是通过JVM来辨认系统语言的,所以当你的系统语言为中文的时候,它会使用中文界面。不过它的中文翻译并不完整,加上默认界面字体太小,使用中文会看着非常难受。如果想使用英文界面,需要修 ......
/********************************
功能:获取表的空间分布情况
**********************************/
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table tablespaceinfo   ......
如何修改SQL Server的连接数
我把SQL Server 7.0的用户连接数设为1后,数据库就再也连不上了,所以也没办法修改连接数
请问有什么办法能修改连接数?
在server 的属性里面有个connetctions 的
maximun concurr ......
DECLARE
TYPE list IS TABLE OF t_stu.project%TYPE INDEX BY BINARY_INTEGER;
project_list list;
v_pro_num NUMBER;
sql_str VARCHAR(255);
t_stu
SID SUBJECT SCORE
1 数学 &n ......