关于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. 使用捆绑连接
相关文档:
CareGroup 医疗组织负责保护2TB 的病人信息和相关数据的隐私及完整性。该组织位于波士顿,是Beth Israel Deaconess 医学中心(哈佛医学院的教学医院)以及另外三家地区医院的母公司。CareGroup 采用Microsoft® SQL Server™ 2005,将其数据存储于30个实例的390个数据库中。该组织希望将数据库升级到SQL Server 200 ......
“经过测试我们发现SQL Server 2008当中的备份压缩功能可以1-3倍的压缩比,从而极大的减少备份所需的磁盘空间。”Alexey Yeltsov, 微软系统管理员主管。
微软在全世界共有6万多名员工,在2006年的财政收入超过了500亿美金,与此同时也产生了大量内部数据,公司希望对这些数据进行集中以便提供客户的集成化视图。 ......
--在日常维护,开发中常遇到写一系列结构类型的sql语句,很烦很累其实可以
--利用SQL*PLUS环境命令 生成脚本文件
set heading off --关闭列的标题
set feedback off --关闭反馈信息
  ......
Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表
问题:
1、查询“”课程比“”课程成绩高的所有学生的学号;
SELECT a.S# from (SELECT s#,score from SC WHERE C#='001') a,
(SELECT s#,score fr ......
数据库备份实例/**
**数据库备份实例
**朱二 2004年5月
**备份策略:
**数据库名:test
**备份文件的路径e:\backup
**每个星期天凌晨1点做一次完全备份,为保险起见,备份到两个同样的完全备份文件test_full_A.bak和test_full_B.bak
**每天1点(除了星期天)做一次差异备份,分别备份到两个文件test_df_A.bak和test_df ......