Я хочу подделать длинный SQL-оператор, чтобы экспериментировать с sys.dm_exec_requests
"Поддельный" не лучший способ описать его, но есть ли у кого-нибудь хороший совет по выбору автогенерированных записей? Возможно, используя CTE?
Я хочу подделать длинный SQL-оператор, чтобы экспериментировать с sys.dm_exec_requests
"Поддельный" не лучший способ описать его, но есть ли у кого-нибудь хороший совет по выбору автогенерированных записей? Возможно, используя CTE?
Вот длинный SQL-оператор:
WAITFOR DELAY '0:05';
Это займет около пяти минут.
В одном окне запроса выполните следующее:
BEGIN TRANSACTION
SELECT * from TableY with (XLOCK)
Затем в другом окне выполните любой (*) запрос, который пытается получить доступ к TableY
. И он будет работать столько, сколько вам нужно, пока вы не закроете первое окно или не выполните в нем ROLLBACK
или COMMIT
.
(*), если вы не добавляете подсказку NOLOCK
к ссылке на TableY
.
Так же, как я писал "CTE"... это заставило меня задуматься. Быстрый поиск позже и вариант 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)
Мне очень нравится ответ Alex KeySmith CTE fooobar.com/info/681468/... потому что вы можете применить его к своим собственным запросам; это означает, что вы можете вернуть действительные данные в долговременной форме.
Например, если у вас есть тестовая таблица с несколькими строками, но вы хотите быстро узнать, как код вашего приложения работает с большими наборами результатов, вы можете сделать следующее:
declare @i int, @c int
select @i = 1, @c = 10;
with X as (
select @i as N union all select N + 1 from x where N < @c
)
select
T.*
from
X,
(
select
*
from
MySmallTestTable
) AS T
option (MaxRecursion 0)
Это будет повторять тестовые данные @c
раз.
Я также использовал его для проверки кода отмены запроса.