2013-01-03 12 views

risposta

17

Ecco una dichiarazione di lunga durata SQL:

WAITFOR DELAY '0:05'; 

ci vorranno circa cinque minuti per eseguire.

+0

Grazie, mi piace questo, è dritto al punto. –

0

Proprio come stavo scrivendo "CTE" ... mi ha fatto pensare. Una rapida ricerca più tardi e una variazione sul http://smehrozalam.wordpress.com/2009/06/09/t-sql-using-common-table-expressions-cte-to-generate-sequences/

--define start and end limits 
Declare @start bigint, @end bigint 
Select @start=1, @end=99999 

;With NumberSequence(Number) as 
(
    Select @start as Number 
     union all 
    Select Number + 1 
     from NumberSequence 
     where Number < @end 
) 

--select result 
Select * From NumberSequence Option (MaxRecursion 0) 
5

In una finestra di query, eseguire il seguente:

BEGIN TRANSACTION 

SELECT * from TableY with (XLOCK) 

Poi, in un'altra finestra, eseguire qualsiasi query (*) che tenta di accedere TableY. E funziona per tutto il tempo che vuoi finché non chiudi la prima finestra o esegui un ROLLBACK o COMMIT in esso.

(*) presupponendo di non aggiungere un suggerimento NOLOCK al riferimento a TableY.

+0

Grazie, mi piace questo per vedere le serrature del tavolo. –

+0

[Non è garantito che funzioni] (http://sqlblog.com/blogs/paul_white/archive/2010/11/01/read-committed-shared-locks-and-rollbacks.aspx) –