Sql-Server

如何為失去的交易創建測試環境

  • September 1, 2015

我有一個問題希望你能幫我解決。我正在使用 SQL Server 2008 R2。

我需要創建一個測試環境,我將能夠在其中人為地“創建”失去的交易。由於我正在使用的應用程序中的網路斷開連接,有時(非常非常罕見)存在“損壞”事務(數據更新的某些部分進入數據庫,但其餘部分不會導致數據庫中的數據不完整)。在我的測試機器上,我不知道該怎麼做。

我知道這是應用程序設計的問題,但我需要證明這種行為正在出現,以便應用程序的供應商可以修復此錯誤。

我真的希望你能幫助我。我不是 dba - 我學會了成為一名 dba,所以如果這個問題是“初級”的,請理解:)

最簡單的方法是查看事務日誌,看看哪裡有可以“拆分”的序列。首先閱讀如何閱讀和解釋 SQL Server 日誌以了解我在說什麼。

然後查看您的數據庫日誌以獲取如下序列:

 lsn1 BEGIN XACT xid1
 lsn2 some update
 lsn3 COMMIT xid1
 lsn4 BEGIN XACT xid2
 lsn5 some update
 lsn6 COMMIT xid2

此序列顯示了數據庫中發生在兩個不同事務中的兩個操作。您想展示如果 xid1 送出但 xid2 回滾會發生什麼。由於在這兩個更新之間擷取應用程序很困難,您可以簡單地使用 STOP AT 恢復數據庫(請參閱恢復到日誌序列號(SQL Server))並在 lsn3 之後但在 lsn6 之前停止恢復(即 xid 1送出但 xid2 將被強制回滾)。現在您的數據庫處於邏輯不一致狀態(第一個操作成功,第二個操作失敗)。

引用自:https://dba.stackexchange.com/questions/112795