一、事务

管理语句:

BEGIN  TRANSACTION(开启)

COMMIT  TRANSACTION(提交)

ROLLBACK  TRANSACTION(回滚)

SAVE  TRANSACTION(保存)

二、锁

封锁,就是一个事务可向系统提出请求,对被操作的数据加锁。其他事务必须等到此事务解锁之后才能访问该数据。

锁的类型:

共享(S)锁,用于读操作

独占(X)锁,用于写操作

更新(U)锁

三、系统与原数据函数

CONVERT()         

将一种数据类型的数据转变为另一种数据类型的数据

CURRENT USER()  

返回当前用户的名称

ISDATE()  

判断它的输入是不是一个有效日期

ISNULL()  

用一个指定替换值替换任何控制

ISNUMERRIC() 

判断它的输入是否是一个数值

四、BEGIN…END语句块

流程控制语句,按组执行语句块

BEGIN

{

Sql_statement | statement_block

}

End

五、SQL Server 2008事务模式

自动提交事务

每条单独的语句都是一个事务

显式事务

每个事务均以BEGIN TRANSACTION语句显式开始,以COMMIT或ROLLBACK语句显式结束

隐式事务

在前一个事务完成时新事务隐式启动,但每个事务仍以COMMIT或ROLLBACK语句显式完成

批处理级事务

只能应用于多个活动结果集。。。

六、XACT-ABORT选项

用于指定当SQL语句出现运行时错误时,SQL Server是否自动回滚到当前事务,语法格式:

SET XACT_ABORT{ ON | OFF}

ON:产生错误时,则整个事务将终止并回滚;OFF:有时只回滚产生错误的SQL语句,而事务将继续进行处理

它的设置是在执行或运行时设置,而不是在分析时设置。

七、死锁

指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象

必要条件:互斥条件

                  请求与保持条件

                  不剥夺条件

                  循环等待条件

死锁的解除和预防:

                 按同一顺序访问对象

                 避免事务中的用户交互

                 保持事务简短并在一个批处理中

                 使用低隔离级别

                 使用绑定连接

死锁的建议:

(1)对于频繁使用的表使用集簇化的索引

(2)设法避免一次性影响大量记录的T-SQL语句,特别是INSERT和UPDATE语句

(3)设法让UPDATE和DELETE语句使用索引

(4)使用嵌套事务是,避免提交和回退冲突

(5)对一些数据不需要及时读取更新值的表在写SQL的时候在表后台加上(nolock),如:Select * from tableA(nolock)