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

Как я могу "проверить" SQL-запрос, который изменяет данные, т.е. Видеть результат перед выполнением в SQL Server 2008?

Я использовал другие инструменты SQL, и некоторые из них позволяют мне видеть вывод угрожающего запроса перед фиксацией. Мне нравится этот двухэтапный процесс (так что я могу дважды проверить, что я не делаю что-то плохое).

Есть ли способ в SQL Server 2008 R2 "выполнить" запрос, увидеть вывод для затронутых строк, а затем выбрать принять или выбросить коммит?

ИЗМЕНИТЬ:

Я также нашел другой вопрос, задающий то же самое с другим ответом, используя предложение OUTPUT.

Как просмотреть деструктивный SQL-запрос?

4b9b3361

Ответ 1

Да, это возможно. Вы можете использовать опцию сеанса SET IMPLICIT_TRANSACTIONS ON или создать явную транзакцию, как показано ниже.

BEGIN TRAN

UPDATE YourTable 
SET foo=1
 /*To Review Changes can use OUTPUT clause here...*/
OUTPUT INSERTED.*, DELETED.*
WHERE bar=2


/*... or a SELECT against the table*/
SELECT *
FROM YourTable
WHERE bar=2


-- Execute the COMMIT or ROLLBACK commands when ready

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

Ответ 2

BEGIN TRAN TEST
UPDATE TABLE_NAME
SET Col='TEST'

После просмотра результатов вы можете выполнить транзакцию COMMIT или ROLLBACK.

USE SELECT @@TRANCOUNT, чтобы увидеть количество открытых транзакций, которые у вас есть в текущем соединении.