2014-01-23 189 views
1

我剛剛發現通過從BEGIN TRAN t1ROLLBACK TRAN t1對中調用存儲過程來測試存儲過程的想法。
我有點害怕這個。 這是一種常見的做法嗎?它可靠嗎?
我的目標是要快速測試存儲過程,讀取和更新2個數據庫(相同的服務器)。 SP不會執行任何截斷,但會使用與INSERT.. OUTPUT語句結合的表變量。
音量會很低(少於1000行受影響)。 感謝使用事務回滾進行測試

+2

我經常這樣做,並且從來沒有遇到過問題。 – JohnD

+0

@JohnD:謝謝。我只是「貶低」這個,看起來像一個不錯的時間表 –

+0

就目前而言,是的。它只是表明存儲過程不會拋出錯誤。這並不表明他們做對了。如果他們什麼都不做,他們會通過這些測試。 –

回答

2

有幾件事情可能出錯:

  • 的PROC可以做自己的事務管理
  • 它可以執行非事務性之類的語句CREATE DATABASE
  • 它可能有一個錯誤,導致事務自動回滾。如果PROC然後繼續以某種方式運行時,它可能會寫東西事務
  • XACT_ABORT之外可能使用不一致,導致前面提到的效果

在一般情況下,這是一個很好的技術,但。

截斷交易,順便說一句。

+1

upvoted和+1爲截斷,因爲有一個神話截斷表不能回滾 – jean

+0

@jean這就是爲什麼我說。我不知道這個神話是從哪裏來的。 DROP TABLE也被處理。所有TRUNCATE都會將b-tree根設置爲空白頁面,並在提交時解除其餘部分。 B樹根可以很容易地回滾。 – usr

相關問題