<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlserver.ro/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>T-SQL</title><link>http://sqlserver.ro/forums/15/ShowForum.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Re: locking on update</title><link>http://sqlserver.ro/forums/thread/9529.aspx</link><pubDate>Fri, 17 May 2013 13:51:27 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:9529</guid><dc:creator>B_gd_n[ ]Sahlean</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/9529.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=9529</wfw:commentRss><description>Salut.&lt;br /&gt;&lt;br /&gt;Planul de execuție real/efectiv de la UPDATE dbo.test (include planul pentru trigger &gt; UDPATE dbo.test_new) este următorul:&lt;br /&gt;http://s10.postimg.org/8v598lf21/Capture046.png&lt;br /&gt;&lt;br /&gt;Planul demonstrează faptul că server-ul parcuge următoarele "etape":&lt;br /&gt;1) Filtrează &amp;#238;nregistrările după condiția col1 = 6 separat pentru fiecare dintre cele două tabele (dbo.test_new şi dbo.test_old) şi face un merge (union all) cu cele două seturi de &amp;#238;nregistrări.&lt;br /&gt;2) După activarea trigger-ului INSTEAD OF , UPDATE-ul real se execută pe dbo.test_new.&lt;br /&gt;&lt;br /&gt;&amp;#206;n legătură cu rezultatele obținute de către dvs.:&lt;br /&gt;[ i ] Sesiunea 2 (SPID-ul 74 &amp;#238;n cazul dvs.) execută cu succes etapa 1) și etapa 2). La etapa 2) obține și menține un loc eXclusiv pe &amp;#238;nregistrarea care are Col1 = 6 (interogare auxiliară SELECT *, %%lockres%% FROM dbo.Test_New WITH(NOLOCK)). Tranzacţia răm&amp;#226;ne deschisă şi lock-ul X este activ.&lt;br /&gt;[ ii ] Sesiunea 3 (SPID-ul 75 &amp;#238;n cazul dvs.) &amp;#238;ncearcă să execute etapa 1): Clustered Index Scan pe dbo.test_new şi dbo.test_old (vezi planul de execuție). Asta presupune ca operatorul Clustered Index Scan pe dbo.test_new să - virgulă - solicite un lock Shared și pe &amp;#238;nregistrarea Col1 = 6. &lt;br /&gt;[i ii ] Deoarece lock-urile X (SPID 74) și S (SPID 75) sunt incompatibile apare un blocaj, SPID-ul 75 fiind pus &amp;#238;n stare de ”așteptare”. Acesta este și motivul pentru care reguest_status - ul pentru S este WAIT, spre deosebire de starea lock-ului X care este GRANT.&lt;br /&gt;&lt;br /&gt;Ceea ce ar fi cu adevărat interesat la testul de mai sus (SQL 2008 R2) ar fi dacă &lt;br /&gt;[ i ] sesiunea 2 ar executa UPDATE-ul pe dbo.test_new (tranzacția răm&amp;#226;ne deschisă !!!) şi&lt;br /&gt;[ ii ] sesiunea 3 ar executa un select fără NOLOCK :-)&lt;br /&gt;adică&lt;br /&gt;SELECT * FROM dbo.test_new;&lt;br /&gt;kw: craigfr&lt;br /&gt;Un articol interesant care are legătură cu UPDATE-urile folosite mai sus (SET Coloana = Coloana) a fost scris de către Aaron Bertrand aici:&lt;br /&gt;http://www.sqlperformance.com/2012/10/t-sql-queries/conditional-updates&lt;br /&gt;&lt;br /&gt;Toate acestea demonstrează ceea ce a spus actual președinte &amp;#238;n perioada lui perioada de ministeriat.</description></item><item><title>Re: locking on update</title><link>http://sqlserver.ro/forums/thread/9528.aspx</link><pubDate>Thu, 16 May 2013 10:45:06 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:9528</guid><dc:creator>rsocol</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/9528.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=9528</wfw:commentRss><description>Problema este JOIN-ul pe col1, pe care nu exista niciun index. Eu as modifica trigger-ul, astfel:&lt;br /&gt;&lt;br /&gt;ALTER TRIGGER [dbo].[trg_Test_Update] &lt;br /&gt;ON [dbo].Test &lt;br /&gt;INSTEAD OF UPDATE &lt;br /&gt;AS &lt;br /&gt;UPDATE dbo.Test_New SET &lt;br /&gt;Col1 = inserted.Col1, &lt;br /&gt;Col2 = inserted.Col2, &lt;br /&gt;Col3 = inserted.Col3 &lt;br /&gt;FROM &lt;br /&gt;inserted &lt;br /&gt;WHERE &lt;br /&gt;dbo.Test_New.ID = inserted.ID&lt;br /&gt;&lt;br /&gt;In acest caz, vom vedea lock de tip U, in loc de S.&lt;br /&gt;&lt;br /&gt;In plus, ar trebui sa ne asiguram ca nu sunt duplicate intre ID-urile dintre cele doua tabele, iar pentru asta ar trebui sa facem o verificare pe trigger-e (sau sa folosesc ID-uri din game separate, verificate cu CK-uri).&lt;br /&gt;&lt;br /&gt;Razvan</description></item><item><title>Re: locking on update</title><link>http://sqlserver.ro/forums/thread/9527.aspx</link><pubDate>Thu, 16 May 2013 08:12:06 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:9527</guid><dc:creator>tebbaerty</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/9527.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=9527</wfw:commentRss><description>Salut,&lt;br /&gt;&lt;br /&gt;Toata povestea de mai sus pare ca difera pentru view-uri.&lt;br /&gt;Am facut urmatorul test : &lt;br /&gt;&lt;br /&gt;--Sesiunea 1&lt;br /&gt;&lt;br /&gt;--DROP TABLE Test_Old&lt;br /&gt;--DROP TABLE Test_New&lt;br /&gt;--DROP VIEW Test&lt;br /&gt;&lt;br /&gt;CREATE TABLE dbo.Test_Old&lt;br /&gt;(&lt;br /&gt;	ID INT IDENTITY PRIMARY KEY,&lt;br /&gt;	Col1 INT NOT NULL,&lt;br /&gt;	Col2 INT NOT NULL,&lt;br /&gt;	Col3 INT NOT NULL&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;CREATE TABLE dbo.Test_New&lt;br /&gt;(&lt;br /&gt;	ID INT IDENTITY PRIMARY KEY,&lt;br /&gt;	Col1 INT NOT NULL,&lt;br /&gt;	Col2 INT NOT NULL,&lt;br /&gt;	Col3 INT NOT NULL&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;create view Test as &lt;br /&gt;select * from Test_Old&lt;br /&gt;union all &lt;br /&gt;select * from Test_New&lt;br /&gt;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;CREATE TRIGGER [dbo].[trg_Test_Update]&lt;br /&gt;ON [dbo].Test&lt;br /&gt;INSTEAD OF UPDATE&lt;br /&gt;AS &lt;br /&gt;	UPDATE dbo.Test_New SET &lt;br /&gt;		Col1 = inserted.Col1,&lt;br /&gt;		Col2 = inserted.Col2,&lt;br /&gt;		Col3 = inserted.Col3&lt;br /&gt;	FROM &lt;br /&gt;		inserted &lt;br /&gt;	WHERE &lt;br /&gt;		dbo.Test_New.Col1 = inserted.Col1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;INSERT  dbo.Test_Old(Col1, Col2, Col3)&lt;br /&gt;VALUES  (1,11,111), (2,22,222), (2,33,333), (2,44,444), (3,55,555);&lt;br /&gt;&lt;br /&gt;INSERT  dbo.Test_New(Col1, Col2, Col3)&lt;br /&gt;VALUES  (6,66,666), (7,77,777), (8,88,888), (9,99,999);&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--Sesiunea 2&lt;br /&gt;SET TRANSACTION ISOLATION LEVEL READ COMMITTED;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;BEGIN TRANSACTION;&lt;br /&gt;&lt;br /&gt;UPDATE  dbo.test SET    &lt;br /&gt;	col1 = col1,&lt;br /&gt;	col2 = col2,&lt;br /&gt;	col3 = col3&lt;br /&gt;where &lt;br /&gt;	col1 = 6&lt;br /&gt;&lt;br /&gt;--rollback&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--Sesiunea 3&lt;br /&gt;SET TRANSACTION ISOLATION LEVEL READ COMMITTED;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;BEGIN TRANSACTION;&lt;br /&gt;&lt;br /&gt;UPDATE  dbo.test SET    &lt;br /&gt;	col1 = col1,&lt;br /&gt;	col2 = col2,&lt;br /&gt;	col3 = col3&lt;br /&gt;where &lt;br /&gt;	col1 = 6&lt;br /&gt;&lt;br /&gt;--rollback&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--Sesiunea 4&lt;br /&gt;SELECT  l.resource_type, l.resource_description, l.request_mode, l.request_type, l.request_status, l.request_session_id&lt;br /&gt;FROM  sys.dm_tran_locks l&lt;br /&gt;WHERE  &lt;br /&gt;	l.resource_type = 'KEY'&lt;br /&gt;ORDER BY l.resource_description, l.request_session_id;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Si ce am obtinut (in sesiunea 4) este &lt;br /&gt;&lt;br /&gt;resource_type	resource_description	request_mode	request_type	request_status	request_session_id&lt;br /&gt;KEY	                (010086470766)                  X	               LOCK	               GRANT	          74&lt;br /&gt;KEY	                (010086470766)                  S	               LOCK	               WAIT	                  75&lt;br /&gt;&lt;br /&gt;Acum, de unde apare acel S ? Daca peste tot se face update.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Mersi,</description></item><item><title>Re: locking on update</title><link>http://sqlserver.ro/forums/thread/9221.aspx</link><pubDate>Tue, 24 Apr 2012 13:11:33 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:9221</guid><dc:creator>crestinul</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/9221.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=9221</wfw:commentRss><description>super tare!
Multumesc</description></item><item><title>Re: locking on update</title><link>http://sqlserver.ro/forums/thread/9215.aspx</link><pubDate>Wed, 18 Apr 2012 13:22:21 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:9215</guid><dc:creator>B_gd_n[ ]Sahlean</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/9215.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=9215</wfw:commentRss><description>0) Ai schimbat textul iniţial al răspunsului tău? Era interesant.&lt;br&gt;&lt;br&gt;1) În mod implicit, o restricţie PRIMARY KEY (ID INT IDENTITY PRIMARY KEY) pp. crearea unui index unic clustered.&lt;br&gt;Toate interogarile de mai sus folosesc (Clustered Index Scan) un index:&lt;br&gt;&lt;font face="Courier New"&gt;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp; i.name, i.index_id, i.type, i.type_desc &lt;br&gt;FROM&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.indexes i&lt;br&gt;WHERE&amp;nbsp;&amp;nbsp;&amp;nbsp; i.object_id = OBJECT_ID('dbo.Test');&lt;br&gt;Rezultate:&lt;br&gt;name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; index_id type type_desc&lt;br&gt;-------------------------- -------- ---- ------------&lt;br&gt;PK__Test__3214EC275CC5B545 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; CLUSTERED&lt;/font&gt;&lt;br&gt;&lt;br&gt;Să pp. că prin folosirea unui index înţelegem Seek.&lt;br&gt;&lt;br&gt;2) Conform (&lt;a href="http://msdn.microsoft.com/en-us/library/ms189849.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms189849.aspx&lt;/a&gt;), SQL Server nu menţine lock-uri la nivel de coloană, nivel maxim de detaliere a lock-urilor fiind cel de înregistrare: RID lock (tabele heap) sau KEY lock (indecşi).&lt;br&gt;&lt;br&gt;3) Dacă foloseşti nivelul implicit de izolare a tranzacţiilor (READ COMMITTED) lock-urile U vor fi ridicate imediat după ce SQL Server decide că înregistrarea citită nu tb. modificată. Cu alte cuvinte, în acest caz, lock-urile U (care nu sunt convertite in lock-uri X) nu sunt menţinute pâna la finalul tranzacţiei lucru care ar putea bloca alte tranzacţii care doresc lock-uri X, doar le-ar "încetini".&lt;br&gt;&lt;br&gt;4) Chiar şi în situaţia sugerată (anterior) de către tine apar lock-uri U, chiar mai multe lock-uri de tip U deoarece sunt implicaţi doi indecşi (unul clustered şi altul nonclustered folosit pt. seek Col1 = 2):&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;SET NOCOUNT ON;&lt;br&gt;&lt;br&gt;CREATE DATABASE CocoJambo;&lt;br&gt;GO&lt;br&gt;&lt;br&gt;USE CocoJambo;&lt;br&gt;GO&lt;br&gt;&lt;br&gt;CREATE TABLE dbo.Test&lt;br&gt;(&lt;br&gt;ID INT IDENTITY PRIMARY KEY,&lt;br&gt;Col1 INT NOT NULL,&lt;br&gt;Col2 INT NOT NULL,&lt;br&gt;Col3 INT NOT NULL,&lt;br&gt;Col4 VARCHAR(5000) DEFAULT 'A' NOT NULL&lt;br&gt;);&lt;br&gt;GO&lt;br&gt;&lt;br&gt;INSERT&amp;nbsp; dbo.Test(Col1, Col2, Col3)&lt;br&gt;VALUES&amp;nbsp; (1,11,111), (2,22,222), (2,33,333), (2,44,444), (3,55,555);&lt;br&gt;GO&lt;br&gt;&lt;br&gt;PRINT 'CREATE INDEX IN_Test_Col1 ...';&lt;br&gt;CREATE INDEX IN_Test_Col1&lt;br&gt;ON dbo.Test(Col1);&lt;br&gt;GO&lt;br&gt;&lt;br&gt;SET SHOWPLAN_TEXT ON; --Afiseaza planul de executie; Datele nu sunt modificate.&lt;br&gt;GO&lt;br&gt;UPDATE&amp;nbsp;&amp;nbsp;&amp;nbsp; Test &lt;br&gt;SET&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Col2 = Col2 * 10&lt;br&gt;WHERE&amp;nbsp;&amp;nbsp;&amp;nbsp; Col1 = 1;&lt;br&gt;GO&lt;br&gt;SET SHOWPLAN_TEXT OFF;&lt;br&gt;GO&lt;br&gt;&lt;br&gt;PRINT 'DROP INDEX dbo.Test.IN_Test_Col1'&lt;br&gt;DROP INDEX dbo.Test.IN_Test_Col1;&lt;br&gt;GO&lt;br&gt;&lt;br&gt;PRINT 'CREATE INDEX IN_Test_Col1_#_Col2 ...'&lt;br&gt;CREATE INDEX IN_Test_Col1_#_Col2&lt;br&gt;ON dbo.Test(Col1)&lt;br&gt;INCLUDE(Col2);&lt;br&gt;GO&lt;br&gt;&lt;br&gt;SET SHOWPLAN_TEXT ON; &lt;br&gt;GO&lt;br&gt;UPDATE&amp;nbsp;&amp;nbsp;&amp;nbsp; Test &lt;br&gt;SET&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Col2 = Col2 * 10&lt;br&gt;WHERE&amp;nbsp;&amp;nbsp;&amp;nbsp; Col1 = 2;&lt;br&gt;GO&lt;br&gt;SET SHOWPLAN_TEXT OFF;&lt;br&gt;GO&lt;br&gt;&lt;br&gt;--Test (Doar pe un server de test)&lt;br&gt;&lt;br&gt;PRINT 'Index clustered -&amp;gt; [locked resourse hash]'&lt;br&gt;SELECT *, %%lockres%% [locked resourse hash] FROM Test WITH(INDEX=0);&lt;br&gt;PRINT 'IN_Test_Col1_#_Col2 -&amp;gt; [locked resourse hash]'&lt;br&gt;SELECT *, %%lockres%% [locked resourse hash] FROM Test WITH(INDEX=IN_Test_Col1_#_Col2);&lt;br&gt;SELECT i.index_id, i.name, i.type, i.type_desc, i.is_primary_key FROM sys.indexes i WHERE i.object_id = OBJECT_ID('dbo.Test');&lt;br&gt;DBCC IND('CocoJambo', 'dbo.Test', -1);&lt;br&gt;&lt;br&gt;DBCC TRACEON(-1, 3604); --Redirectioneaza output-ul de la comenzile DBCC catre client&lt;br&gt;DBCC TRACEON(-1, 1200); --Afiseaza lock-urile&lt;br&gt;GO&lt;br&gt;&lt;br&gt;BEGIN TRANSACTION;&lt;br&gt;UPDATE&amp;nbsp;&amp;nbsp;&amp;nbsp; Test &lt;br&gt;SET&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Col2 = Col2 * 10&lt;br&gt;WHERE&amp;nbsp;&amp;nbsp;&amp;nbsp; Col1 = 2;&lt;br&gt;ROLLBACK&lt;br&gt;&lt;br&gt;DBCC TRACEOFF(-1, 3604);&lt;br&gt;DBCC TRACEOFF(-1, 1200);&lt;/font&gt;&lt;br&gt;&lt;br&gt;Rezultate:&lt;br&gt;&lt;font face="Courier New"&gt;&lt;font color="#FF0000"&gt;CREATE INDEX IN_Test_Col1 ... (acest index este parţial şi "nu va putea fi utilizat"(există şi excepţii); PK___Test__... este indexul clustered)&lt;/font&gt;&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br&gt;&amp;nbsp; |--Clustered Index Update(OBJECT:([CocoJambo].[dbo].[Test].[PK__Test__3214EC277F60ED59]), SET:([CocoJambo].[dbo].[Test].[Col2] = RaiseIfNullUpdate([Expr1003])))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |--Compute Scalar(DEFINE:([Expr1003]=[CocoJambo].[dbo].[Test].[Col2]*(10)))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |--Top(ROWCOUNT est 0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |--Clustered Index Scan(OBJECT:([CocoJambo].[dbo].[Test].[PK__Test__3214EC277F60ED59]), WHERE:([CocoJambo].[dbo].[Test].[Col1]=(1)) ORDERED)&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;font color="#FF0000"&gt;DROP INDEX dbo.Test.IN_Test_Col1&lt;br&gt;CREATE INDEX IN_Test_Col1_#_Col2 ... (acest index include va putea fi utilizat -seek- de către UPDATE)&lt;/font&gt;&lt;br&gt;&lt;br&gt;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br&gt;&amp;nbsp; |--Clustered Index Update(OBJECT:([CocoJambo].[dbo].[Test].[PK__Test__3214EC277F60ED59]), OBJECT:([CocoJambo].[dbo].[Test].[IN_Test_Col1_#_Col2]), SET:([CocoJambo].[dbo].[Test].[Col2] = RaiseIfNullUpdate([Expr1003])))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |--Compute Scalar(DEFINE:([Expr1011]=[Expr1011]))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |--Compute Scalar(DEFINE:([Expr1003]=[CocoJambo].[dbo].[Test].[Col2]*[@1], [Expr1011]=CASE WHEN CASE WHEN [CocoJambo].[dbo].[Test].[Col2] = [CocoJambo].[dbo].[Test].[Col2]*[@1] THEN (1) ELSE (0) END THEN (0) ELSE (1) END))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |--Top(ROWCOUNT est 0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |--Index Seek(OBJECT:([CocoJambo].[dbo].[Test].[IN_Test_Col1_#_Col2]), &lt;font color="#000000"&gt;SEEK:([CocoJambo].[dbo].[Test].[Col1]=CONVERT_IMPLICIT(int,[@2],0)) ORDERED FORWARD)&lt;/font&gt;&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;font color="#FF0000"&gt;Index clustered -&amp;gt; [locked resourse hash]&lt;/font&gt;&lt;br&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Col1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Col2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Col3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Col4 locked resourse hash&lt;br&gt;----------- ----------- ----------- ----------- ---- --------------------&lt;br&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp; (010086470766)&lt;br&gt;&lt;b&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 22&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 222&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp; (020068e8b274)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;- WHERE Col1 = 2&lt;/b&gt;&lt;br&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 33&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp; (03000d8f0ecc)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE Col1 = 2&lt;br&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 44&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 444&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp; (0400b4b7d951)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE Col1 = 2&lt;br&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 55&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp; (0500d1d065e9)&lt;br&gt;&lt;br&gt;&lt;font color="#FF0000"&gt;IN_Test_Col1_#_Col2 -&amp;gt; [locked resourse hash]&lt;/font&gt;&lt;br&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Col1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Col2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Col3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Col4 locked resourse hash&lt;br&gt;----------- ----------- ----------- ----------- ---- --------------------&lt;br&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp; (02006d47cbee)&lt;br&gt;&lt;b&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 22&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 222&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp; (040060eff172)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;- WHERE Col1 = 2&lt;/b&gt;&lt;br&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 33&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp; (050005884dca)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE Col1 = 2&lt;br&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 44&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 444&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp; (0600bcb09a57)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE Col1 = 2&lt;br&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 55&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp; (080047d78c23)&lt;br&gt;&lt;br&gt;index_id&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type_desc&amp;nbsp;&amp;nbsp;&amp;nbsp; is_primary_key&lt;br&gt;----------- --------------------------&amp;nbsp; ------------ --------------&lt;br&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PK__Test__3214EC277F60ED59&amp;nbsp; CLUSTERED&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IN_Test_Col1_#_Col2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NONCLUSTERED 0&lt;br&gt;&lt;br&gt;&lt;font color="#FF0000"&gt;Lista cu paginile folosite de catre indecşii din tabela CocoJambo.dbo.Test ...&lt;/font&gt;&lt;br&gt;PageFID PagePID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IndexID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PageType IndexLevel &lt;br&gt;------- ----------- ----------- -------- ---------- &lt;br&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 79&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;- PK__Test__3214EC277F60ED59&amp;nbsp; CLUSTERED &lt;br&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 78&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;- PK__Test__3214EC277F60ED59&amp;nbsp; CLUSTERED&lt;br&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;- IN_Test_Col1_#_Col2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NONCLUSTERED&lt;br&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 89&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;- IN_Test_Col1_#_Col2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NONCLUSTERED&lt;br&gt;&lt;br&gt;Process 55 acquiring IX lock on OBJECT: 10:2105058535:0&amp;nbsp; (class bit2000000 ref1) result: OK&lt;br&gt;&lt;br&gt;{Lock IU @ pagina 1:89 din indexul NonClst (vezi lista DBCC IND)}&lt;br&gt;Process 55 acquiring IU lock on PAGE: 10:1:89 (class bit0 ref1) result: OK&lt;br&gt;&lt;br&gt;&lt;b&gt;{Lock U @ cheia (040060eff172) din indexul NonClst (vezi IN_Test_Col1_#_Col2 -&amp;gt; [locked resourse hash])}&lt;/b&gt;&lt;br&gt;Process 55 acquiring U lock on KEY: 10:72057594038910976 (040060eff172) (class bit0 ref1) result: OK&lt;br&gt;&lt;br&gt;{Lock IU @ pagina 1:78 din indexul Clst}&lt;br&gt;Process 55 acquiring IU lock on PAGE: 10:1:78 (class bit0 ref1) result: OK&lt;br&gt;&lt;br&gt;&lt;b&gt;{Lock U @ cheia (020068e8b274) din indexul Clst (vezi Index clustered -&amp;gt; [locked resourse hash]])}&lt;/b&gt;&lt;br&gt;Process 55 acquiring U lock on KEY: 10:72057594038779904 (020068e8b274) (class bit0 ref1) result: OK&lt;br&gt;&lt;br&gt;{Conversie IU -&amp;gt; IX @ pagina 1:78 din indexul Clst}&lt;br&gt;Process 55 acquiring IX lock on PAGE: 10:1:78 (class bit2000000 ref0) result: OK&lt;br&gt;&lt;br&gt;&lt;b&gt;{Conversie U -&amp;gt; X @ cheia (020068e8b274) din indexul Clst}&lt;/b&gt;&lt;br&gt;Process 55 acquiring X lock on KEY: 10:72057594038779904 (020068e8b274) (class bit2000000 ref0) result: OK&lt;br&gt;&lt;br&gt;{Conversie IU -&amp;gt; IX @ pagina 1:89 din indexul NonClst}&lt;br&gt;Process 55 acquiring IX lock on PAGE: 10:1:89 (class bit2000000 ref1) result: OK&lt;br&gt;&lt;br&gt;&lt;b&gt;{Conversie U -&amp;gt; X @ cheia (040060eff172) din indexul NonClst}&lt;/b&gt;&lt;br&gt;Process 55 acquiring X lock on KEY: 10:72057594038910976 (040060eff172) (class bit2000000 ref1) result: OK&lt;br&gt;Process 55 releasing lock reference on KEY: 10:72057594038910976 (040060eff172)&lt;br&gt;Process 55 releasing lock reference on PAGE: 10:1:89&lt;br&gt;Process 55 releasing lock reference on KEY: 10:72057594038779904 (020068e8b274)&lt;br&gt;Process 55 releasing lock reference on PAGE: 10:1:78&lt;br&gt;Process 55 releasing lock reference on KEY: 10:72057594038910976 (040060eff172)&lt;/font&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>Re: locking on update</title><link>http://sqlserver.ro/forums/thread/9201.aspx</link><pubDate>Fri, 06 Apr 2012 09:01:48 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:9201</guid><dc:creator>crestinul</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/9201.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=9201</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://sqlserver.ro/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;B_gd_n[ ]Sahlean:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;1) Pentru UPDATE&lt;br&gt;- c&amp;#226;nd sunt citite &amp;#238;nregistrările acestea sunt blocate folosind lock-uri U iar atunci&lt;br&gt;- c&amp;#226;nd trebuiesc modificate &amp;#238;nregistrările,  lock-urile U sunt convertite &amp;#238;n lock-uri X.&lt;br&gt;Lock-urile U sunt compatibile cu cele S(hared) dar incompatibile cu alte lock-uri U sau X.&lt;br&gt;Asta pp. că dacă două sesiuni &amp;#238;ncearcă să modifice aceeași &amp;#238;nregistrare, prima sesiune v-a obține un lock U &amp;#238;n timp ce a doua sesiune va trebui să aștepte finalizare tranzacției din prima sesiune.&lt;br&gt;&lt;br&gt;Dacă rulezi următorul script &amp;#238;n trei sesiuni separate SSMS &lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--Sesiunea 1&lt;/span&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--DROP TABLE Test&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;CREATE&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TABLE&lt;/span&gt; dbo.Test&lt;br&gt;(&lt;br&gt;&amp;#160;&amp;#160;ID &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INT&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;IDENTITY&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;,&lt;br&gt;&amp;#160;&amp;#160;Col1 &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INT&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;NOT&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;NULL&lt;/span&gt;,&lt;br&gt;&amp;#160;&amp;#160;Col2 &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INT&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;NOT&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;NULL&lt;/span&gt;,&lt;br&gt;&amp;#160;&amp;#160;Col3 &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INT&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;NOT&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;NULL&lt;/span&gt;&lt;br&gt;);&lt;br&gt;GO&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INSERT&lt;/span&gt;&amp;#160;&amp;#160;dbo.Test(Col1, Col2, Col3)&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;VALUES&lt;/span&gt;&amp;#160;&amp;#160;(1,11,111), (2,22,222), (2,33,333), (2,44,444), (3,55,555);&lt;br&gt;GO&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SET&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TRANSACTION&lt;/span&gt; ISOLATION LEVEL REPEATABLE &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;READ&lt;/span&gt;;&lt;br&gt;GO&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BEGIN&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TRANSACTION&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;    *&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;    .dbo.Test&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt;    Col1 = 3;&lt;br&gt;&lt;br&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--ROLLBACK;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--Sesiunea 2&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SET&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TRANSACTION&lt;/span&gt; ISOLATION LEVEL &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;READ&lt;/span&gt; COMMITTED;&lt;br&gt;GO&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BEGIN&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TRANSACTION&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;UPDATE&lt;/span&gt;&amp;#160;&amp;#160;dbo.Test &lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SET&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Col2 = Col2 * 10;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ROLLBACK&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--Sesiunea 3&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;#160;&amp;#160;l.resource_type, l.resource_description, l.request_mode, l.request_type, l.request_status, l.request_session_id&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;#160;&amp;#160;sys.dm_tran_locks l&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt;&amp;#160;&amp;#160;l.resource_type = &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'KEY'&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BY&lt;/span&gt; l.resource_description, l.request_session_id;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;#160;&amp;#160;*, %%lockres%% &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AS&lt;/span&gt; resource_description&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;#160;&amp;#160;dbo.Test &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WITH&lt;/span&gt;(NOLOCK)&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BY&lt;/span&gt; %%lockres%%;&lt;/span&gt;&lt;br&gt;&lt;br&gt;se observă la final (sesiunea 3) &lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;br&gt;resource_type resource_description request_mode request_type request_status request_session_id&lt;br&gt;------------- -------------------- ------------ ------------ -------------- ------------------&lt;br&gt;KEY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (010086470766)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; X&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LOCK&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GRANT&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 57&lt;br&gt;KEY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (020068e8b274)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; X&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LOCK&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GRANT&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 57&lt;br&gt;KEY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (03000d8f0ecc)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; X&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LOCK&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GRANT&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 57&lt;br&gt;KEY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (0400b4b7d951)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; X&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LOCK&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GRANT&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 57&lt;br&gt;&lt;b&gt;&lt;font color="#FF0000"&gt;KEY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (0500d1d065e9)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; S&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LOCK&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GRANT&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 56&lt;/font&gt;&lt;br&gt;&lt;font color="#0000FF"&gt;KEY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (0500d1d065e9)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; X&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LOCK&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CONVERT&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 57&lt;br&gt;KEY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (0500d1d065e9)&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; U&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LOCK&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GRANT&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 57&lt;/font&gt;&lt;/b&gt;&lt;br&gt;&lt;br&gt;(7 row(s) affected)&lt;br&gt;&lt;br&gt;ID&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Col1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Col2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Col3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; resource_description&lt;br&gt;----------- ----------- ----------- ----------- --------------------------------&lt;br&gt;1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 110&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 111&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (010086470766)&lt;br&gt;2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 220&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 222&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (020068e8b274)&lt;br&gt;3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 330&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 333&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (03000d8f0ecc)&lt;br&gt;4&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 440&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 444&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (0400b4b7d951)&lt;br&gt;&lt;b&gt;5&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 55&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 555&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (0500d1d065e9)&lt;/b&gt;&lt;br&gt;&lt;br&gt;(5 row(s) affected)&lt;/span&gt;&lt;br&gt;faptul că&lt;br&gt;- sesiunea 1 @@spid=56 execută SELECT și obţine (request_status=GRANT) un lock S pe &amp;#238;nregistrarea ID=4 / (0500d1d065e9), &amp;#238;nregistrare care verifică condiţia Col1 = 3&lt;br&gt;- sesiunea 2 @@spid=57 execută UPDATE și obţine un lock U (request_status=GRANT) pe acceași &amp;#238;nregistrare ID=4 / (0500d1d065e9) la citirea &amp;#238;nregistrării (U este compatibil cu S)&lt;br&gt;- sesiunea 2 @@spid=57 execută UPDATE și &amp;#238;ncearcă să obțină un lock X (request_status=CONVERT) pe &amp;#238;nregistrarea ID=4 / (0500d1d065e9); Altfel spus, sesiunea 2 &amp;#238;ncearcă să transforme lock-ul U &amp;#238;n lock X (request_status=CONVERT). Conform MSDN "A convert request status indicates that the requestor has already been granted a request for the resource and &lt;b&gt;is currently waiting&lt;/b&gt; for an upgrade to the initial request to be granted."&lt;br&gt;- deoarece (a) sesiunea 1 are deja un lock S, (b) sesiunea 2 &amp;#238;ncearcă să obţină X (U -&gt; X) iar (b) S şi X sunt incompatibile =&gt; sesiunea 2 este pusă &lt;b&gt;&amp;#238;n aşteptare&lt;/b&gt; fapt care este indicat prin statusul request_status=CONVERT.&lt;br&gt;&lt;br&gt;2) Dacă la citirea &amp;#238;nregistrărilor UPDATE ar utiliza lock-uri S(hared &amp;#238;n locul de U) atunci c&amp;#226;nd două sesiuni ar &amp;#238;ncerca să actualizeze aceeași &amp;#238;nregistrare&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;br&gt;Timp&amp;#160;&amp;#160;Sesiunea 1&amp;#160;&amp;#160;Sesiunea 2&lt;br&gt;T1&amp;#160;&amp;#160;&amp;#160; lock S&lt;br&gt;T2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lock S (posibil deoarece lock-urile S sunt compatibile)&lt;br&gt;T3&amp;#160;&amp;#160;&amp;#238;ncearcă &lt;br&gt;&amp;#160;&amp;#160;&amp;#160; conversie&lt;br&gt;&amp;#160;&amp;#160;&amp;#160; S -&gt; X (imposibil deoarece sesiunea1.X şi sesiunea2.S  sunt incompatibile =&gt; sesiunea 1 este pusă &amp;#238;n aşteptare)&lt;br&gt;T4&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;#238;ncearcă &lt;br&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;conversie&lt;br&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;S -&gt; X (imposibil deoarece sesiunea2.X şi sesiunea1.S sunt incompatibile =&gt; sesiunea 2 este pusă &amp;#238;n aşteptare)&lt;/span&gt;&lt;br&gt;&lt;br&gt;s-ar obţine un deadlock. &lt;br&gt;Deoarece SQL Server foloseşte la UPDATE un lock tip U (nu S) la citirea &amp;#238;nregistrărilor (&amp;#238;nainte de a decide dacă trebuiesc modificate) vom avea&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Timp&amp;#160;&amp;#160;Sesiunea 1&amp;#160;&amp;#160;Sesiunea 2&lt;br&gt;T1&amp;#160;&amp;#160;lock U&lt;br&gt;T2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;lock U (lock-urile U sunt incompatibile =&gt; sesiunea 2 trebuie să aştepte a prima sesiune să finalizeze tranzacţia)&lt;/span&gt;&lt;br&gt;&lt;br&gt;iar deadlock-ul amintit mai sus este evitat.&lt;br&gt;&lt;br&gt;3) &amp;#206;n ceea ce priveşte durata pentru care sunt menţinute lock-urile U, &amp;#238;n urma execuţiei următorului script folosind diverse nivele de izolare a tranzacţiilor READ COMMITTED, REPEATABLE READ şi SERIALIZABLE &lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--Sesiunea 4&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SET&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TRANSACTION&lt;/span&gt; ISOLATION LEVEL SERIALIZABLE;&lt;br&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;&lt;/span&gt;&lt;br&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--SET TRANSACTION ISOLATION LEVEL READ COMMITTED;&lt;/span&gt;&lt;br&gt;GO&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BEGIN&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TRANSACTION&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;UPDATE&lt;/span&gt;&amp;#160;&amp;#160;dbo.Test &lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SET&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Col2 = Col2 * 10&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt;&amp;#160;&amp;#160;Col1 = 2;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;#160;&amp;#160;l.resource_type, l.resource_description, l.request_mode, l.request_type, l.request_status, l.request_session_id&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;#160;&amp;#160;sys.dm_tran_locks l&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt;&amp;#160;&amp;#160;l.resource_type = &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'KEY'&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BY&lt;/span&gt; l.resource_description, l.request_session_id;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;#160;&amp;#160;*, %%lockres%% &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AS&lt;/span&gt; resource_description&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;#160;&amp;#160;dbo.Test &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WITH&lt;/span&gt;(NOLOCK)&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BY&lt;/span&gt; %%lockres%%;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ROLLBACK&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;br&gt;se poate observa &lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--&lt;/span&gt;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;READ COMMITTED, &lt;/span&gt;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;REPEATABLE READ&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;resource_type resource_description request_mode request_type request_status request_session_id&lt;br&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;------------- -------------------- ------------ ------------ -------------- ------------------&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (020068e8b274)       X            LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (03000d8f0ecc)       X            LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (0400b4b7d951)       X            LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;br&gt;(3 row(s) affected)&lt;br&gt;&lt;br&gt;sau&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--&lt;/span&gt;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SERIALIZABLE&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;(1 row(s) affected)&lt;br&gt;ID          Col1        Col2        Col3        resource_description&lt;br&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;----------- ----------- ----------- ----------- --------------------------------&lt;/span&gt;&lt;br&gt;1           1           11          111         (010086470766)&lt;br&gt;2           2           220         222         (020068e8b274)&lt;br&gt;3           2           330         333         (03000d8f0ecc)&lt;br&gt;4           2           440         444         (0400b4b7d951)&lt;br&gt;5           3           55          555         (0500d1d065e9)&lt;br&gt;&lt;br&gt;(5 row(s) affected)&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;resource_type resource_description request_mode request_type request_status request_session_id&lt;br&gt;&lt;b&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;------------- --------------------------------- ------------ -------------- ------------------&lt;/span&gt;&lt;br&gt;&lt;font color="#FF0000"&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (010086470766)       RangeS-U     LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;/font&gt;&lt;/b&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (020068e8b274)       RangeX-X     LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (03000d8f0ecc)       RangeX-X     LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (0400b4b7d951)       RangeX-X     LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;b&gt;&lt;font color="#FF0000"&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (0500d1d065e9)       RangeS-U     LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;/font&gt;&lt;/b&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (ffffffffffff)       RangeS-U     LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;br&gt;(6 row(s) affected)&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ID          Col1        Col2        Col3        resource_description&lt;br&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;----------- ----------- ----------- ----------- --------------------------------&lt;/span&gt;&lt;br&gt;1           1           11          111         (010086470766)&lt;br&gt;2           2           220         222         (020068e8b274)&lt;br&gt;3           2           330         333         (03000d8f0ecc)&lt;br&gt;4           2           440         444         (0400b4b7d951)&lt;br&gt;5           3           55          555         (0500d1d065e9)&lt;br&gt;&lt;br&gt;(5 row(s) affected)&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;că după citirea unei &amp;#238;nregistrări care nu tb. actualizată de către UPDATE (ID=1 sau ID=5; caz &amp;#238;n care nu este necesară conversia U -&gt; X)&amp;#160; lock-ul iniţial este ridicat sau este menţinut &amp;#238;n funcţie de nivelul de izolare astfel:&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Nivele de izolare &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Se menţine lock-ul U p&amp;#226;na la sf. tranzacţiei ?&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;READ&lt;/span&gt; COMMITTED, REPEATABLE &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;READ&lt;/span&gt;&amp;#160;&amp;#160;NU&lt;br&gt;SERIALIZABLE&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt; &amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt; &amp;#160; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;DA (se foloseşte RangeS-U &amp;#238;n loc de U)&lt;/span&gt;&lt;br&gt;&lt;br&gt;4) Calea de acces la date ([CLUSTERED] INDEX SCAN, TABLE SCAN, INDEX SEEK) şi lock-urile utilizate de către SQL Server sunt aspecte diferite. &lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br /&gt;daca folosesc un Index nu o sa mai am lockuri U pe coloanele pe care nu le actualizez pentru ca database engine o sa-mi citeasca indexul nu recordurile din tabela , o sa am lockuri de Update doar pe recordul 2</description></item><item><title>Re: locking on update</title><link>http://sqlserver.ro/forums/thread/9199.aspx</link><pubDate>Wed, 04 Apr 2012 13:51:19 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:9199</guid><dc:creator>tebbaerty</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/9199.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=9199</wfw:commentRss><description>wow :D&lt;br /&gt;&lt;br /&gt;Ultimele 2 posturi sunt geniale.&lt;br /&gt;Am vazut si video-ul din link si e foarte bun&lt;br /&gt;&lt;br /&gt;Mersi B_gd_n[ ]Sahlean pentru timpul alocat pentru a scrie postul :D&lt;br /&gt;</description></item><item><title>Re: locking on update</title><link>http://sqlserver.ro/forums/thread/9198.aspx</link><pubDate>Wed, 04 Apr 2012 10:38:36 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:9198</guid><dc:creator>Diana</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/9198.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=9198</wfw:commentRss><description>Urmareste si&lt;br /&gt;http://technet.microsoft.com/en-us/sqlserver/gg313762.aspx</description></item><item><title>Re: locking on update</title><link>http://sqlserver.ro/forums/thread/9194.aspx</link><pubDate>Tue, 03 Apr 2012 10:48:48 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:9194</guid><dc:creator>B_gd_n[ ]Sahlean</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/9194.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=9194</wfw:commentRss><description>1) Pentru UPDATE&lt;br&gt;- când sunt citite înregistrările acestea sunt blocate folosind lock-uri U iar atunci&lt;br&gt;- când trebuiesc modificate înregistrările,  lock-urile U sunt convertite în lock-uri X.&lt;br&gt;Lock-urile U sunt compatibile cu cele S(hared) dar incompatibile cu alte lock-uri U sau X.&lt;br&gt;Asta pp. că dacă două sesiuni încearcă să modifice aceeași înregistrare, prima sesiune v-a obține un lock U în timp ce a doua sesiune va trebui să aștepte finalizare tranzacției din prima sesiune.&lt;br&gt;&lt;br&gt;Dacă rulezi următorul script în trei sesiuni separate SSMS &lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--Sesiunea 1&lt;/span&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--DROP TABLE Test&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;CREATE&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TABLE&lt;/span&gt; dbo.Test&lt;br&gt;(&lt;br&gt;&amp;nbsp;&amp;nbsp;ID &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INT&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;IDENTITY&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;,&lt;br&gt;&amp;nbsp;&amp;nbsp;Col1 &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INT&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;NOT&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;NULL&lt;/span&gt;,&lt;br&gt;&amp;nbsp;&amp;nbsp;Col2 &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INT&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;NOT&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;NULL&lt;/span&gt;,&lt;br&gt;&amp;nbsp;&amp;nbsp;Col3 &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INT&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;NOT&lt;/span&gt; &lt;span style="color:Silver;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;NULL&lt;/span&gt;&lt;br&gt;);&lt;br&gt;GO&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;INSERT&lt;/span&gt;&amp;nbsp;&amp;nbsp;dbo.Test(Col1, Col2, Col3)&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;VALUES&lt;/span&gt;&amp;nbsp;&amp;nbsp;(1,11,111), (2,22,222), (2,33,333), (2,44,444), (3,55,555);&lt;br&gt;GO&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SET&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TRANSACTION&lt;/span&gt; ISOLATION LEVEL REPEATABLE &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;READ&lt;/span&gt;;&lt;br&gt;GO&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BEGIN&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TRANSACTION&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;    *&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;    .dbo.Test&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt;    Col1 = 3;&lt;br&gt;&lt;br&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--ROLLBACK;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--Sesiunea 2&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SET&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TRANSACTION&lt;/span&gt; ISOLATION LEVEL &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;READ&lt;/span&gt; COMMITTED;&lt;br&gt;GO&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BEGIN&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TRANSACTION&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;UPDATE&lt;/span&gt;&amp;nbsp;&amp;nbsp;dbo.Test &lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SET&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Col2 = Col2 * 10;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ROLLBACK&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--Sesiunea 3&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;nbsp;&amp;nbsp;l.resource_type, l.resource_description, l.request_mode, l.request_type, l.request_status, l.request_session_id&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;nbsp;&amp;nbsp;sys.dm_tran_locks l&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt;&amp;nbsp;&amp;nbsp;l.resource_type = &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'KEY'&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BY&lt;/span&gt; l.resource_description, l.request_session_id;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;nbsp;&amp;nbsp;*, %%lockres%% &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AS&lt;/span&gt; resource_description&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;nbsp;&amp;nbsp;dbo.Test &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WITH&lt;/span&gt;(NOLOCK)&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BY&lt;/span&gt; %%lockres%%;&lt;/span&gt;&lt;br&gt;&lt;br&gt;se observă la final (sesiunea 3) &lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;br&gt;resource_type resource_description request_mode request_type request_status request_session_id&lt;br&gt;------------- -------------------- ------------ ------------ -------------- ------------------&lt;br&gt;KEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (010086470766)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GRANT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 57&lt;br&gt;KEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (020068e8b274)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GRANT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 57&lt;br&gt;KEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (03000d8f0ecc)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GRANT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 57&lt;br&gt;KEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0400b4b7d951)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GRANT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 57&lt;br&gt;&lt;b&gt;&lt;font color="#FF0000"&gt;KEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0500d1d065e9)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; S&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GRANT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 56&lt;/font&gt;&lt;br&gt;&lt;font color="#0000FF"&gt;KEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0500d1d065e9)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONVERT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 57&lt;br&gt;KEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0500d1d065e9)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GRANT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 57&lt;/font&gt;&lt;/b&gt;&lt;br&gt;&lt;br&gt;(7 row(s) affected)&lt;br&gt;&lt;br&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Col1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Col2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Col3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; resource_description&lt;br&gt;----------- ----------- ----------- ----------- --------------------------------&lt;br&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 110&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 111&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (010086470766)&lt;br&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 220&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 222&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (020068e8b274)&lt;br&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 330&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 333&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (03000d8f0ecc)&lt;br&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 440&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 444&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0400b4b7d951)&lt;br&gt;&lt;b&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 55&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 555&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0500d1d065e9)&lt;/b&gt;&lt;br&gt;&lt;br&gt;(5 row(s) affected)&lt;/span&gt;&lt;br&gt;faptul că&lt;br&gt;- sesiunea 1 @@spid=56 execută SELECT și obţine (request_status=GRANT) un lock S pe înregistrarea ID=4 / (0500d1d065e9), înregistrare care verifică condiţia Col1 = 3&lt;br&gt;- sesiunea 2 @@spid=57 execută UPDATE și obţine un lock U (request_status=GRANT) pe acceași înregistrare ID=4 / (0500d1d065e9) la citirea înregistrării (U este compatibil cu S)&lt;br&gt;- sesiunea 2 @@spid=57 execută UPDATE și încearcă să obțină un lock X (request_status=CONVERT) pe înregistrarea ID=4 / (0500d1d065e9); Altfel spus, sesiunea 2 încearcă să transforme lock-ul U în lock X (request_status=CONVERT). Conform MSDN "A convert request status indicates that the requestor has already been granted a request for the resource and &lt;b&gt;is currently waiting&lt;/b&gt; for an upgrade to the initial request to be granted."&lt;br&gt;- deoarece (a) sesiunea 1 are deja un lock S, (b) sesiunea 2 încearcă să obţină X (U -&amp;gt; X) iar (b) S şi X sunt incompatibile =&amp;gt; sesiunea 2 este pusă &lt;b&gt;în aşteptare&lt;/b&gt; fapt care este indicat prin statusul request_status=CONVERT.&lt;br&gt;&lt;br&gt;2) Dacă la citirea înregistrărilor UPDATE ar utiliza lock-uri S(hared în locul de U) atunci când două sesiuni ar încerca să actualizeze aceeași înregistrare&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;br&gt;Timp&amp;nbsp;&amp;nbsp;Sesiunea 1&amp;nbsp;&amp;nbsp;Sesiunea 2&lt;br&gt;T1&amp;nbsp;&amp;nbsp;&amp;nbsp; lock S&lt;br&gt;T2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lock S (posibil deoarece lock-urile S sunt compatibile)&lt;br&gt;T3&amp;nbsp;&amp;nbsp;încearcă &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; conversie&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; S -&amp;gt; X (imposibil deoarece sesiunea1.X şi sesiunea2.S  sunt incompatibile =&amp;gt; sesiunea 1 este pusă în aşteptare)&lt;br&gt;T4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; încearcă &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;conversie&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;S -&amp;gt; X (imposibil deoarece sesiunea2.X şi sesiunea1.S sunt incompatibile =&amp;gt; sesiunea 2 este pusă în aşteptare)&lt;/span&gt;&lt;br&gt;&lt;br&gt;s-ar obţine un deadlock. &lt;br&gt;Deoarece SQL Server foloseşte la UPDATE un lock tip U (nu S) la citirea înregistrărilor (înainte de a decide dacă trebuiesc modificate) vom avea&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Timp&amp;nbsp;&amp;nbsp;Sesiunea 1&amp;nbsp;&amp;nbsp;Sesiunea 2&lt;br&gt;T1&amp;nbsp;&amp;nbsp;lock U&lt;br&gt;T2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lock U (lock-urile U sunt incompatibile =&amp;gt; sesiunea 2 trebuie să aştepte a prima sesiune să finalizeze tranzacţia)&lt;/span&gt;&lt;br&gt;&lt;br&gt;iar deadlock-ul amintit mai sus este evitat.&lt;br&gt;&lt;br&gt;3) În ceea ce priveşte durata pentru care sunt menţinute lock-urile U, în urma execuţiei următorului script folosind diverse nivele de izolare a tranzacţiilor READ COMMITTED, REPEATABLE READ şi SERIALIZABLE &lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--Sesiunea 4&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SET&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TRANSACTION&lt;/span&gt; ISOLATION LEVEL SERIALIZABLE;&lt;br&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;&lt;/span&gt;&lt;br&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--SET TRANSACTION ISOLATION LEVEL READ COMMITTED;&lt;/span&gt;&lt;br&gt;GO&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BEGIN&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;TRANSACTION&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;UPDATE&lt;/span&gt;&amp;nbsp;&amp;nbsp;dbo.Test &lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SET&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Col2 = Col2 * 10&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt;&amp;nbsp;&amp;nbsp;Col1 = 2;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;nbsp;&amp;nbsp;l.resource_type, l.resource_description, l.request_mode, l.request_type, l.request_status, l.request_session_id&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;nbsp;&amp;nbsp;sys.dm_tran_locks l&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WHERE&lt;/span&gt;&amp;nbsp;&amp;nbsp;l.resource_type = &lt;span style="color:Red;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;'KEY'&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BY&lt;/span&gt; l.resource_description, l.request_session_id;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SELECT&lt;/span&gt;&amp;nbsp;&amp;nbsp;*, %%lockres%% &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;AS&lt;/span&gt; resource_description&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;FROM&lt;/span&gt;&amp;nbsp;&amp;nbsp;dbo.Test &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;WITH&lt;/span&gt;(NOLOCK)&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;BY&lt;/span&gt; %%lockres%%;&lt;br&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ROLLBACK&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;br&gt;se poate observa &lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--&lt;/span&gt;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;READ COMMITTED, &lt;/span&gt;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;REPEATABLE READ&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;resource_type resource_description request_mode request_type request_status request_session_id&lt;br&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;------------- -------------------- ------------ ------------ -------------- ------------------&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (020068e8b274)       X            LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (03000d8f0ecc)       X            LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (0400b4b7d951)       X            LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;br&gt;(3 row(s) affected)&lt;br&gt;&lt;br&gt;sau&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;--&lt;/span&gt;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;SERIALIZABLE&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;(1 row(s) affected)&lt;br&gt;ID          Col1        Col2        Col3        resource_description&lt;br&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;----------- ----------- ----------- ----------- --------------------------------&lt;/span&gt;&lt;br&gt;1           1           11          111         (010086470766)&lt;br&gt;2           2           220         222         (020068e8b274)&lt;br&gt;3           2           330         333         (03000d8f0ecc)&lt;br&gt;4           2           440         444         (0400b4b7d951)&lt;br&gt;5           3           55          555         (0500d1d065e9)&lt;br&gt;&lt;br&gt;(5 row(s) affected)&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;resource_type resource_description request_mode request_type request_status request_session_id&lt;br&gt;&lt;b&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;------------- --------------------------------- ------------ -------------- ------------------&lt;/span&gt;&lt;br&gt;&lt;font color="#FF0000"&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (010086470766)       RangeS-U     LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;/font&gt;&lt;/b&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (020068e8b274)       RangeX-X     LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (03000d8f0ecc)       RangeX-X     LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (0400b4b7d951)       RangeX-X     LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;b&gt;&lt;font color="#FF0000"&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (0500d1d065e9)       RangeS-U     LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;/font&gt;&lt;/b&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;KEY&lt;/span&gt;           (ffffffffffff)       RangeS-U     LOCK         &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;GRANT&lt;/span&gt;          58&lt;br&gt;&lt;br&gt;(6 row(s) affected)&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;ID          Col1        Col2        Col3        resource_description&lt;br&gt;&lt;span style="color:Teal;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;----------- ----------- ----------- ----------- --------------------------------&lt;/span&gt;&lt;br&gt;1           1           11          111         (010086470766)&lt;br&gt;2           2           220         222         (020068e8b274)&lt;br&gt;3           2           330         333         (03000d8f0ecc)&lt;br&gt;4           2           440         444         (0400b4b7d951)&lt;br&gt;5           3           55          555         (0500d1d065e9)&lt;br&gt;&lt;br&gt;(5 row(s) affected)&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;că după citirea unei înregistrări care nu tb. actualizată de către UPDATE (ID=1 sau ID=5; caz în care nu este necesară conversia U -&amp;gt; X)&amp;nbsp; lock-ul iniţial este ridicat sau este menţinut în funcţie de nivelul de izolare astfel:&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Nivele de izolare &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;Se menţine lock-ul U pâna la sf. tranzacţiei ?&lt;br&gt;&lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;READ&lt;/span&gt; COMMITTED, REPEATABLE &lt;span style="color:Blue;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;READ&lt;/span&gt;&amp;nbsp;&amp;nbsp;NU&lt;br&gt;SERIALIZABLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt; &amp;nbsp; &lt;/span&gt;&lt;span style="color:Black;background-color:Transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;DA (se foloseşte RangeS-U în loc de U)&lt;/span&gt;&lt;br&gt;&lt;br&gt;4) Calea de acces la date ([CLUSTERED] INDEX SCAN, TABLE SCAN, INDEX SEEK) şi lock-urile utilizate de către SQL Server sunt aspecte diferite. &lt;br&gt;&lt;br&gt;</description></item><item><title>Re: locking on update</title><link>http://sqlserver.ro/forums/thread/9192.aspx</link><pubDate>Mon, 02 Apr 2012 07:17:57 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:9192</guid><dc:creator>tebbaerty</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/9192.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=9192</wfw:commentRss><description>M-a lamurit propozia asta :D :&lt;br /&gt;&lt;br /&gt;"In cazul in care nu avem indexi sau criteriul de filtrare nu este foarte selectiv, atunci se va prefera un index scan. Dezavantajul este ca la citirea fiecarui rand se vor pune lockuri pentru a avea consistenta datelor (lockurile sunt puse pe fiecare rand doar in timpul citirii acelui rand). Acestea ar trebui sa fie shared locks (datele pot fi citite dar nu pot fi sterse/modificate in timpul acesta). Pe randurile care indeplinesc criteriul/criterile de filtrare, se vor pune exclusive locks (datele nu pot fi citite/sterse/modificate pe toata perioada tranzactiei). "&lt;br /&gt;&lt;br /&gt;Care cred ca se aplica si pentru al 2-lea caz (index seek cu predicate).&lt;br /&gt;&lt;br /&gt;Inteleg ca de fapt inca din momentul obtinerii resultsetului se pun exclusive locks, ci nu in momentul in care se face update-ul.&lt;br /&gt;Astfel asta inseamna ca de fapt seriliazarea se va face inca din faza de obtinere a result seturilor.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Offtopic : Pentru cei care vor citi acest thread sa fie atenti si la lock escalation (daca este activat se va pune un lock exclusiv direct pe tabela daca numarul de randuri afectate vor depasii ~5000. Daca nu se reuseste escaladarea din prima se va incerca la fiecare ~1000 randuri. Lockul exclusiv pe tabela blocheaza toate selecturile care nu sunt cu (nolock) sau isolation level read uncommitted). Pe mine nu m-a interesat acest aspect :)&lt;br /&gt;&lt;br /&gt;Offtopic : Pentru usurinta se poate folosi si sp_lock.&lt;br /&gt;&lt;br /&gt;Mersi,</description></item><item><title>Re: locking on update</title><link>http://sqlserver.ro/forums/thread/9188.aspx</link><pubDate>Sun, 01 Apr 2012 16:47:00 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:9188</guid><dc:creator>ovc</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/9188.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=9188</wfw:commentRss><description>Salut,&lt;br&gt;&lt;br&gt;presupunand ca pe tabela avem un index care include col3, col2 si col1 (poate contine si doar una dintre coloane daca selectivitatea este mare) atunci se va face un index seek. La un Index Seek se vor pun exclusive lock-uri doar pe randurile respective care sunt gasite in urma index seek-ului din planul de executie.&lt;br&gt;&lt;br&gt;In cazul in care nu avem indexi sau criteriul de filtrare nu este foarte selectiv, atunci se va prefera un index scan. Dezavantajul este ca la citirea fiecarui rand se vor pune lockuri pentru a avea consistenta datelor (lockurile sunt puse pe fiecare rand doar in timpul citirii acelui rand). Acestea ar trebui sa fie shared locks (datele pot fi citite dar nu pot fi sterse/modificate in timpul acesta). Pe randurile care indeplinesc criteriul/criterile de filtrare, se vor pune exclusive locks (datele nu pot fi citite/sterse/modificate pe toata perioada tranzactiei).&lt;br&gt;&lt;br&gt;In varianta cu scan, pe langa faptul ca trebuie citite toate inregistrarile din tabela, mai poate aparea un delay din cauza lock-urilor. De exemplu daca de la o tranzactie avem un shared lock pe o inregistrare, si vine o alta tranzactie care necesita un exclusive lock (update/delete), atunci a doua tranzactie trebuie sa astepte pana prima tranzactie elibereaza resursa.&lt;br&gt;&lt;br&gt;&lt;br&gt;Ca si test poti sa creezi urmatoarea tabela:&lt;br&gt;CREATE TABLE [dbo].[table1](&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [col1] [int] NOT NULL,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [col2] [int] NULL,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [col3] [int] NULL,&lt;br&gt;&amp;nbsp;CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED &lt;br&gt;(&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [col1] ASC&lt;br&gt;)WITH (PAD_INDEX&amp;nbsp; = OFF, STATISTICS_NORECOMPUTE&amp;nbsp; = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS&amp;nbsp; = ON, ALLOW_PAGE_LOCKS&amp;nbsp; = ON) ON [PRIMARY]&lt;br&gt;) ON [PRIMARY]&lt;br&gt;&lt;br&gt;GO&lt;br&gt;&lt;br&gt;apoi ruleaza intrun query window:&lt;br&gt;begin tran&lt;br&gt;update table1 &lt;br&gt;set col2=2&lt;br&gt;where col3=3&lt;br&gt;&lt;br&gt;Acest query va face un scan pe toata tabela.&lt;br&gt;Daca rulezi:&lt;br&gt;SELECTresource_type, request_mode, request_type,request_owner_type&amp;nbsp;&amp;nbsp; &lt;br&gt;FROM sys.dm_tran_locks&lt;br&gt;WHERE request_session_id=60&lt;br&gt;&amp;nbsp;&amp;nbsp; AND resource_database_id=14&lt;br&gt;&lt;br&gt;resource_type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_mode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; request_type&amp;nbsp;&amp;nbsp;&amp;nbsp; request_owner_type&lt;br&gt;------------------------------------------------------------ ------------------------------------------------------------ ------------------------------------------------------------ ------------------------------------------------------------&lt;br&gt;DATABASE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; S&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHARED_TRANSACTION_WORKSPACE&lt;br&gt;PAGE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRANSACTION&lt;br&gt;KEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRANSACTION&lt;br&gt;OBJECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRANSACTION&lt;br&gt;&lt;br&gt;(4 row(s) affected)&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;S- shared lock&lt;br&gt;X - exclusive lock&lt;br&gt;IX - intent exclusive&lt;br&gt;Mai multe explicatii despre diferitele lock-uri aici: http://msdn.microsoft.com/en-us/library/ms175519.aspx&lt;br&gt;&lt;br&gt;In timp ce update-ul este inca activ, toate operatile vor merge, care nu fac au nevoie sa citeasca sau sa scrie ceva pe randul/randurile afectate de update.&lt;br&gt;&lt;br&gt;&lt;br&gt;Sper ca asta iti raspunde la intrebare :)&lt;br&gt;</description></item><item><title>locking on update</title><link>http://sqlserver.ro/forums/thread/9186.aspx</link><pubDate>Sat, 31 Mar 2012 08:42:31 GMT</pubDate><guid isPermaLink="false">963f3a18-65dd-4aad-905c-b785cfe1d7c7:9186</guid><dc:creator>tebbaerty</dc:creator><slash:comments>0</slash:comments><comments>http://sqlserver.ro/forums/thread/9186.aspx</comments><wfw:commentRss>http://sqlserver.ro/forums/commentrss.aspx?SectionID=15&amp;PostID=9186</wfw:commentRss><description>Salut,&lt;br /&gt;&lt;br /&gt;Incerc sa inteleg cum functioneaza lock impreuna cu update. Nu am reusit sa gasesc nimic care sa imi confirme teoria.&lt;br /&gt;&lt;br /&gt;presupunem ca am urmatorul update:&lt;br /&gt;&lt;br /&gt;update table set col3 = 1 where col1 = 2 and col2 = 3 and col3 = 1&lt;br /&gt;&lt;br /&gt;Ce se intampla under the hood atat in varianta index seek cu/fara predicate cat si in varianta index scan ?&lt;br /&gt;&lt;br /&gt;I. Daca se face index seek fara predicate inseamna ca se gaseste automat randul/randurile care ne intereseaza. Pentru a face seeking se pune shared lock pe randuri si dupa ce s-a obtinut result setul se trece la updlock si se face update-ul ?&lt;br /&gt;Sau se face seeking cu updlock in mod automat.&lt;br /&gt;&lt;br /&gt;II. Daca se face index seek cu predicate inseamna ca se gaseste un result set pe care ulterior mai aplica o filtrare pentru a obtine ce ne intereseaza. Pentru a face seeking se pune shared lock pe randuri dupa care se aplica filtrarea (tot cu shared lock) si dupa ce s-a obtinut result setul necesar se trece la updlock si se face update-ul ?&lt;br /&gt;Sau se face seeking cu shared lock si filtrarea cu updlock. Sau altfel ?&lt;br /&gt;&lt;br /&gt;III Dar la index scan care presupune parcurgerea tuturor inregistrarilor ? Ma indoiesc ca aici s-ar pune direct updlock.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Intreb pentru ca intr-un mediu multithreading este posibil cumva ca threaduri complet separate sa faca acelasi update de 2 ori ? Adica dupa ce 2 sau multe threaduri fac cautarea in acelasi timp (si daca cautarea se face cu shared lock este permis acelasi lucru) obtin result setul necesar dupa care trec la update unde o sa avem un updlock si se serializeaza accesul. Oricum dat fiind ca toate thredurile au obtinut resultsetul nu mai conteaza ca updateul se face serializat... tot se face de mai multe ori.&lt;br /&gt;&lt;br /&gt;Ce parere aveti ?&lt;br /&gt;Mersi,&lt;br /&gt;</description></item></channel></rss>