2011-05-12 22 views
17

我已經使用了其他SQL工具,有些允許我在提交之前看到威脅查詢的輸出。我喜歡這兩個步驟的過程(所以我可以仔細檢查我沒有做壞事)。如何「測試」修改數據的sql查詢,即在sql server 2008中提交之前查看輸出?

SQL Server 2008 R2有沒有一種方法可以「執行」查詢,查看受影響行的輸出,然後選擇接受還是丟棄提交?

編輯:

我還發現了另外一個問題問同一個使用OUTPUT子句不同的答案。

How do I preview a destructive SQL query?

+0

可能的重複[如何預覽破壞性SQL查詢?](http://stackoverflow.com/questions/465083/how-do-i-preview-a-destructive-sql-query) – 2014-12-18 20:50:53

回答

26

是的,這是可能的。您可以使用會話選項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 

但是你應該知道,直到事務完成它可以阻止其他交易所以這應該慎用於任何多用戶環境中打開的交易將持有鎖。

3
BEGIN TRAN TEST 
UPDATE TABLE_NAME 
SET Col='TEST' 

查看結果您可以COMMITROLLBACK交易完成後。

使用SELECT @@TRANCOUNT查看當前連接中的打開事務數。