Подтвердить что ты не робот

Временная таблица запросов в хранимой процедуре во время отладки в SQL 2008 Management Studio

У меня есть очень большая хранимая процедура, которая вызывает другие хранимые процедуры и применяет результаты к временным таблицам.

Я отлаживаю в SQL 2008 Management Studio и могу использовать окно просмотра для запроса локальных параметров, но как я могу запросить временную таблицу во время отладки?

Если не представляется возможным альтернативный подход? Я прочитал об использовании табличных переменных вместо этого, можно ли их запросить? Если да, то как мне это сделать?

4b9b3361

Ответ 1

Использовать глобальные временные таблицы, т.е. с двойным хешем.

insert into ##temp select ...

Во время отладки вы можете приостановить SP в какой-то момент, а в другом окне запроса доступна таблица ## для запроса.

select * from ##temp

Отдельные хеш-таблицы (#tmp) являются специфичными для сеанса и видны только из сеанса.

Ответ 2

Я построил процедуру, которая отобразит содержимое временной таблицы из другого соединения с базой данных. (что невозможно с обычными запросами). Обратите внимание, что он использует DBCC PAGE и трассировку по умолчанию для доступа к данным, поэтому используйте их только для целей отладки.

Ответ 3

альтернативой будет использование переменной в вашем сохраненном proc, которая позволяет отлаживать "на лету".

Я использую переменную @debug_out (BIT).

работает что-то вроде этого

ALTER PROCEDURE [dbo]. [usp_someProc]

@some_Var VARCHAR (15) = 'AUTO',

@debug_Out BIT = 0

НАЧАТЬ

  IF @debug_Out = 1
       BEGIN
            PRINT('THIS IS MY TABLE');
            SELECT * FROM dbo.myTable;
       END ................ 

КОНЕЦ

Самое замечательное в этом - когда ваш код запускает вашу хранимую процедуру, по умолчанию не отображается ни один из этих разделов отладки. когда вы хотите отлаживать, вы просто передаете свою отладочную переменную.

EXEC usp_someProc @debug_Out= 1

Ответ 4

просто не удаляйте временную таблицу или закрывайте транзакцию

eg

select * into #temp from myTable

select * from #temp