sqlserver锁表处理

1.模拟锁表

//建立模拟表  CREATE   TABLE  Lock1(C1  int   default ( 0 ));  CREATE   TABLE  Lock2(C1  int   default ( 0 ));  INSERT   INTO  Lock1  VALUES ( 1 );  INSERT   INTO  Lock2  VALUES ( 1 );

2.发生死锁

//在新开窗口1执行  Begin   Tran     Update  Lock1  Set  C1 = C1 + 1 ;    WaitFor  Delay  ' 00:01:00 ' ;    SELECT   *   FROM  Lock2  Rollback   Tran ; //在新开窗口2执行 Begin   Tran     Update  Lock2  Set  C1 = C1 + 1 ;    WaitFor  Delay  ' 00:01:00 ' ;    SELECT   *   FROM  Lock1  Rollback   Tran ;

3.查询发生死锁的表

select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName  from sys.dm_tran_locks where resource_type='OBJECT'

//清除死锁注意:在新开窗口执行语句否则会发生

declare @spid int Set @spid =121//spid为上一sql查询出来的结果这里是52、53、57 declare @sql varchar(1000)set @sql='kill '+cast(@spid as varchar)exec(@sql)

注:模拟死锁代码参照http://www.2cto.com/database/201309/242860.html

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

DB2的一种临时表写法

最近在使用DB2的临时表,学到了一种不用创建临时表再删除临时表的写法:SELECT\FROMTABLE(VALUES(COLUMN\_VALUE,COLUMN\_VALUE))TABLE\_NAME(COLUMN\_NAME,COLUMN\_NUM).比如:SELECTA,BFROMTABLE(VALUES('1','2'),('

MySQL 基本操作

1、创建数据库:CREATE DATABSE  数据库名;2、切换数据库:USE DATABASE 数据库名;3、创建数据表:CREATE TABLE 表名(属性名 属性类型,...);4、插入数据:INSERT INTO 表名 VALUES(数据值,...);5、从文件中导入数据:

MySQL 查询MAX函数+GROUP BY的一个误区

    首先,创建一个表如下,pid为主键,并且自动增长CREATE TABLE theTable (  pid INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,  timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  cost I

c#读写txt文件

//writetxtStringBuilderbuildernewStringBuilder();FileStreamfsnewFileStream(saveFileName,FileMode.Create);StreamWriterswnewStreamWriter(fs,Encoding.Default);for(int

Mysql 分区表

DROPTABLEIFEXISTS\frank\_test\;CREATETABLE\frank\_test\(\id\bigint(20)NOTNULLAUTO\_INCREMENTCOMMENT'主键id',\gid\bigint(20)DEFAULT'0'COMMENT'基础表id'