
事务与锁
zjcxc
这个作者很懒,什么都没留下…
展开
-
处理BLOCK
use master --必须在master数据库中创建goif exists (select * from dbo.sysobjects where id = object_id(N[dbo].[p_lockinfo]) and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure [dbo].[p_lockinfo]GO/*--原创 2004-04-13 14:15:00 · 4184 阅读 · 1 评论 -
用SQL语句来建立跟踪的问题
/*-- 下面是我用SQL的事件探察器设置跟踪,并生成的SQL脚本 现在有几个问题: 1.这个跟踪不会产生数据,用: select * from ::fn_trace_getinfo(1) 可以看到状态是在运行,但 c:/test.trc 始终是空文件 2.在事件探察器中设置筛选时,ObjectType 的说明是对应 sysobjects 表的 type 列,该列是字符型,但我输入字符时原创 2004-07-21 13:16:00 · 4285 阅读 · 5 评论 -
如何使用跟踪标记 1204
如何使用跟踪标记 1204 -- =====================================================-- 如何使用跟踪标记 1204-- -- 邹建 2005.08(引用请保留此信息)-- =====================================================-- ===========================原创 2005-08-25 09:15:00 · 12871 阅读 · 4 评论 -
UPDATE 时, 如何避免数据定位处理被阻塞
问题描述:数据库PUBS中的authors表,想锁定CITY为aaa的记录,为什么执行下面的命令后,CITY为bbb的记录也被锁定了,无法进行UPDATE.BEGIN TRANSACTION SELECT * FROM authors WITH (HOLDLOCK) WHERE city=aaa 如何才能锁定CITY为AAA的记录,而原创 2006-09-17 13:24:00 · 7400 阅读 · 3 评论 -
使用事务与锁,实现一个用户取过的数据不被其他用户取到
问题描述:用ADO访问数据库,从一个表中取一定的记录(比如20行),取出后在程序中使用,使用完后删除掉记录(不用更新或删除记录)。在多用户操作下(每个用户采用相同的操作),怎么保证一个用户已选取的记录不被其他用户选取? 问题解决:处理这类问题的一般方法是增加一个标志列,每个用户取的记录设置一个标志,新的用户只从标志为未取的记录中获取记录。而本文利用事务与锁来原创 2006-08-28 20:31:00 · 10534 阅读 · 13 评论 -
令人郁闷的“事务中的变量赋值错误”
事务中的变量(包括表变量)的操作是不受事务控制的。但是反过来,事务中的变量操作失败,却会导致事务提交失败,这个有点让人郁闷。 下面的脚本演示这个问题。示例演示分拆以逗号分隔的 @ids 中的每个 id, 如果这个 id 是数字(int型),则做后面的处理;如果不是数字(赋值失败,进入CATCH块),则跳过这个id,处理下一个。整个处理在一个事务中进行。原创 2008-12-28 02:56:00 · 9346 阅读 · 2 评论 -
锁不住的查询
环境: SQL Server 2005 or 2008最近在处理一个锁的问题时,发现一个比较郁闷的事,使用X锁居然无法锁住查询,模拟这个问题,可以使用如下T-SQL脚本来建立测试环境。USE master;GO IF @@TRANCOUNT > 0 ROLLBACK TRAN;GO -- ================================原创 2009-07-27 10:27:00 · 15332 阅读 · 51 评论 -
初步了解更新锁(U)与排它锁(X)
一直没有认真觉察UPDATE操作的锁,最近在MSDN上看到一个问题,询问堆表更新的死锁问题,问题很简单,有类似这样的表及数据:CREATE TABLE dbo.tb( c1 int, c2 char(10), c3 varchar(10));GODECLARE @id int;SET @id = 0;WHILE @id 5BEGIN; SET原创 2014-05-28 17:13:46 · 20146 阅读 · 10 评论