2011-12-12 45 views
0

我遇到了一些場景,我必須在我們的生產數據庫中手動刪除或修改記錄。這通常是應用程序無法按預期方式工作的地方。如何處理在生產環境中執行即席查詢?

如何刪除或更新這些記錄,而不會意外刪除或修改我正在使用的表中的所有記錄?

交易是實現此目的的合適方式嗎?

如果有幫助,我正在使用SQL Server Management Studio。

回答

3

是的。交易總是一個好主意。

查看OUTPUT Clause。開始一個事務,使用output子句執行更新或刪除語句,驗證結果,然後提交事務。

我這樣做:

BEGIN TRANSACTION; 
DELETE table1 
OUTPUT DELETED.*; 
ROLLBACK TRANSACTION; 

我運行,需要時間來看看結果。然後當我滿意並再次運行時,將最後一條語句更改爲COMMIT TRANSACTION

這就是說,我會盡我所能避免這樣做。嚇到我了。如果您發現自己可能不止一次地這樣做,可以在提供此註冊功能的應用程序中添加一些內容(或修復您正在清理的錯誤)。

2

是的,你可以在測試時使用TRAN

-- Start with Transaction 
BEGIN TRAN OperationStart 
     -- Delete Items 
    DELETE FROM TableName 
     -- Where Condition 

     -- Update Items 
    UPDATE TableName 
      SET Column1 = 'some values' 
     -- Where Condition 

    -- Check/See the changes 
    SELECT * FROM TableName 
     -- Where Condition 

-- Rollback all test operation/changes 
    -- Once you confirm then, COMMIT Transaction 
ROLLBACK TRAN OperationStart