Отладочная вставка и временные таблицы в SQL 2012

Я использую SQL Server 2012 и отлаживаю процедуру хранилища, которая выполняет INSERT INTO #temporal table SELECT.

Есть ли способ просмотреть данные, выбранные в команде (подзапрос вставки в?) Есть ли способ просмотреть вставленные данные и / или временную таблицу, в которой вставка внесла изменения?

Не имеет значения, если это всего строк, а не по одной

ОБНОВЛЕНИЕ:

Требования AT Compliance и Политика компании требуют, чтобы любые изменения могли быть внесены в процесс тестирования, и, вероятно, этим будет управлять другая команда. Есть ли способ избежать каких-либо изменений в сценарии?

Основная идея заключается в том, что пользователь AT проверяет выходные данные на своем рабочем столе, копирует и вставляет их без каких-либо изменений в среде или продукте.

Спасибо и добрые пожелания.


person Leandro Bardelli    schedule 15.03.2013    source источник


Ответы (3)


Если я правильно понял ваш вопрос, взгляните на _1 _ :

Возвращает информацию или выражения на основе каждой строки, затронутой оператором INSERT, UPDATE, DELETE или MERGE. Эти результаты могут быть возвращены приложению обработки для использования в таких вещах, как подтверждающие сообщения, архивирование и другие подобные требования приложения.


Например:

INSERT INTO #temporaltable 
OUTPUT inserted.*
SELECT *
FROM ...

Выдает все строки из оператора INSERT, который был вставлен в таблицу temporal, которые были выбраны из другой таблицы.

person Mahmoud Gamal    schedule 15.03.2013
comment
Есть ли способ избежать модификации SQL, чтобы обеспечить соответствие AT? - person Leandro Bardelli; 15.03.2013
comment
в любом случае +1 за помощь он дает мне новые выходы из коробки - person Leandro Bardelli; 15.03.2013
comment
Если вы собираетесь требовать, чтобы скрипты соответствовали «AT-соответствию», возможно, вы бы побаловали нас, что это такое? - person Jake H; 15.03.2013

Есть ли причина, по которой вы не можете просто сделать это: SELECT * FROM #temporal? (И отлаживайте его в SQL Server Management Studio, передавая те же параметры, которые передает ваше приложение).

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

Я бы все же, наверное, сделал это по-другому (теперь я об этом знаю).

person Bennor McCarthy    schedule 15.03.2013
comment
Если вы хотите сделать это, не внося никаких изменений в сохраненную процедуру, вам может не повезти. В Management Studio можно отлаживать сценарии (путем установки точек останова и пошагового выполнения сценария), но я никогда этого не делал и не уверен, насколько это хорошо. Это должно помочь вам начать: stackoverflow.com / questions / 2016879 / - person Bennor McCarthy; 15.03.2013
comment
Я использую его с @vars в процедурах магазина, но никогда с запросами. У меня он работает нормально, мне он нравится (и я совсем не фанат РС). Спасибо за ссылку! +1 - person Leandro Bardelli; 15.03.2013

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

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

IF @debug = 1
BEGIN
   SELECT * FROM #temp
END
person HLGEM    schedule 15.03.2013
comment
Ох, хорошо! Спасибо за совет. Так что мне интересно, что это за утилита для отладки sql, если вы не можете выполнить такую ​​отладку: S - person Leandro Bardelli; 15.03.2013
comment
Бьет меня, я никогда не использую его, так как считаю его бесполезным для того, что мне нужно. - person HLGEM; 18.03.2013