UPDLOCK Question

Apr 21, 2008

Any locking experts?


Are these two queries functionally identical (identical locking)?


--QUERY 1

update MyTable with (UPDLOCK)

set MyField = 1 where MyField2 = 2


--QUERY 2

update MyTable

set MyField = 1 where MyField2 = 2


In other words, is UPDLOCK redundant in an UPDATE query?

View 1 Replies


ADVERTISEMENT

BLock Records Using UPDLOCK

Oct 2, 2006

Hi all,
here my question :
I have 2 applications.

connection 1.
one does select max(grp) from orv and one does select max(grp) from orh. orh is the historical file from orv. We did this to know which is the greather grp between these 2 files.
After having did this, we add 1 at grp field.
we insert into orv the record max(grp) + 1

connection 2.
an other application could insert at the same time record in this table orv with same parameters.

my problem is the following. I need to block record in orv table either on the select ( connection 1) or Insert ( connection 2) to avoid having select max(grp) + 1 on orv at connection 1 and Insert a record into orv at connection 2.
I believe I need to use HOLDLOCK, UPDLOCK.
but I have not the habitude to use them.

Can I do this ?
connection 1
select max(grp) from orv WITH HOLDLOCK
connection 2
what should I use to avoid lock when I need to insert into orv. ?

thanks for your quick answer

View 1 Replies View Related

Admin Version Of WITH(UPDLOCK)?

Jul 26, 2006

Is there anything I can do from the Enterprise Manager console or fromwithin a JDBC connection to achieve the same effect as WITH(UPDLOCK)?Yes, I could change all of my SQL statements to include the lock... butisn't there any way to set or tweak something in SQL Server so that I won'thave to hack a lot of code* to make things concurrent? Perhaps a way to setUPDLOCK as the default behaviour for the server, or schema, or table, orsomething?Jerry H.* == The existing SQL has to remain as generic as possible so that it can beimplemented for four other databases.

View 3 Replies View Related

UPDLOCK On A Mult-table Join

Jul 23, 2005

Hi all,Is this legal ?SELECT a.col1,b.col2,c.col3FROM tab1 a WITH (UPDLOCK) , tab2 b, tab3 cWHERE a.col1 = b.col1and b.col2 = c.col1WIll the above cause a UPDLOCK on tab1 and not tab2 and tab3?COmments,thoughts,criticisms?I have a problem with a query that performs a multi-table jointo get column values and then one of the tables in the join isbeing updated. I am getting DEADLOCKs and was wondering if I couldtry and reduce that.Also how can I find out what locks are in effect for a certainquery..Is it syslocks or are there any other tables..?DrD

View 2 Replies View Related

SQL Seems To Ignore UPDLOCK && ROWLOCK Hints

Dec 3, 2007



I've got a SELECT WITH (UPDLOCK, ROWLOCK) WHERE followed by an UPDATE WHERE statement. The results of the SELECT statement are deserialized in C# and updates are made to the deserialized object. Then the object is serialized back into the table with the UPDATE statement. I've got this code running within a transaction scope with the ReadCommited isolation level.

My service receives requests to update data and the requests can come in on different threads. What I'm seeing, is that once in a while, the log messages from my application indicate that two different threads are able to issue the above SELECT statement and both are receiving results. This is a problem since the thread that issues the last UPDATE will overwrite the changes made by the first. Each thread has its own connection and transaction scope.

I've researched all over the place and have tried a few different things, but all things point to the fact that query hints are just hints and that SQL may or may not pay attention to them. If that's the case, how am I suppose to perform a SELECT with the intention of updating so that no one else can do the same? I haven't tried table level locking, but I'd really like to avoid that if possible.

-Mike

View 4 Replies View Related

Transact SQL :: Sessions Need To Have UPDLOCK To Avoid Deadlocks

Nov 21, 2015

The benifit of UPDLOCK is that it avoids deadlock in case both sessions run the below query at the same time.The table has clustered index on ID column

----session 1 --------
begin transaction
select * from a1

update a1
set id = 22
where id = 2

----session 2 --------
begin transaction
select * from a1

update a1
set id = 22
where id = 2

Now to avoid deadlock in the above scenario we should use (UPDLOCK) hint in the select statement.Now my question is that deadlock will be avoided in this case when both the sessions use UPDLOCK hint. If only one session uses UPDLOCk and other does not then there will be deadlock .For example session 1 uses UPDLOCK hint this will hold the U lock on the row, but the session 2 does not use this hint and apply shared lock on the same row. Now there will be deadlock when session 1 tries to update the record and is blocked by shared locks of session 2. same will be the case with session 2 and both will wait for each other and hence dead lock.so what steps can be taken to avoid deadlocks in this case. I do not want to use Snapshot isolation.

View 3 Replies View Related

Transact SQL :: Difference Between HOLDLOCK And UPDLOCK In Server

Jul 15, 2015

just see same kind of two sql statement

BEGIN TRAN
SELECT *
FROM authors AU
WITH (HOLDLOCK, ROWLOCK)
WHERE AU.au_id = '274-80-9391'

COMMIT TRAN
BEGIN TRANSELECT *
FROM authors AU
WITH (UPDLOCK, ROWLOCK)
WHERE AU.au_id = '274-80-9391'COMMIT TRAN

i like to know what is the difference between HOLDLOCK and UPDLOCK in sql server. explain with example to better understand.

View 4 Replies View Related

Queue Processing Using Updlock, Readpast Locking Hints

Apr 25, 2008

This article instructed me on how to process rows from a table used as a data queue for multiple processes.

http://www.mssqltips.com/tip.asp?tip=1257

I tested this against the AdventureWorks DB (SQL 2005) and multiple SQL connections inside of Sql Mgmt. Studio).

Connection1:


BEGIN TRANSACTION


SELECT TOP 1 * FROM Production.WorkOrder WITH (updlock, readpast) --skips over locked rows
--COMMIT TRANSACTION

Connection2:


BEGIN TRANSACTION


SELECT TOP 1 * FROM Production.WorkOrder WITH (updlock, readpast) --skips over locked rows

COMMIT TRANSACTION



This works like I want where connection 2 skips over the locked row from connection 1 and gets the next available record from the table / queue. However, when I add ORDER BY tsql to each sql statement, connection 2 is now blocked waiting for Connection 1 to commit. (This is not what I want)

Connection1:


BEGIN TRANSACTION


SELECT TOP 1 * FROM Production.WorkOrder WITH (updlock, readpast) order by DueDate

--COMMIT TRANSACTION

Connection2:


BEGIN TRANSACTION


SELECT TOP 1 * FROM Production.WorkOrder WITH (updlock, readpast) order by DueDate --is blocked until connection 1 commits transaction

COMMIT TRANSACTION




How do I prevent blocking when using these locking hints with ORDER BY?


thanks

View 6 Replies View Related

DB Engine :: Does UPDLOCK Request Incur Physical write In Any Isolation Level

Nov 12, 2015

Does a UPDLOCK request incur a physical write in any isolation level? (including read committed snapshot)

For example:
BEGIN TRANSACTION
SELECT col FROM dbo.test WITH ( UPDLOCK )
ROLLBACK

Is there any physical write taking place here?

View 13 Replies View Related

Insert Should Aquire Only Exclusive Rowlock. Why Does Insert Block Select With ( Updlock, Rowlock )?

Mar 12, 2007

Here is the situation i am stuck with, see the example first and below explained the problem:

-- 'SESSION A

create table foo (

id integer,

pid integer,

data varchar(10)

);

begin transaction

insert into foo values ( 1, 1, 'foo' )

insert into foo values ( 2, 1, 'bar' )

insert into foo values ( 3, 1, 'bozo' )

insert into foo values ( 4, 2, 'snafu' )

insert into foo values ( 5, 2, 'rimrom' )

insert into foo values ( 6, 2, 'blark' )

insert into foo values ( 7, 3, 'smeg' )

commit transaction

create index foo_id_idx on foo ( id )

create index foo_pid_idx on foo ( pid )

begin transaction

insert into foo values ( 9, 3, 'blamo' )

-- 'SESSION B

begin transaction

select id, data from foo with ( updlock, rowlock ) where id = 5;



-- Problem:

-- Uncommitted transaction in session A, with insert into table FOO, aquires lock on index foo_pid_idx which BLOCKS select with ( updlock, rowlock ) in session B.

-- Insert should aquire only exclusive rowlock. Why does insert block select with ( updlock, rowlock )?



Appreciate your help,

Rajesh.

View 5 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved