2013年1月28日 星期一

SQL Server - 如何在資料庫鏡像上啟用快照集隔離

       在前面的文章中有介紹到如何透過快照集隔離 (Snapshot Isolation Level) 來降低鎖定的問題,但如果要在有設定Database Mirroring的資料庫上進行設定時,就會遇到下列的錯誤訊息。


先前文章:
如何使用快照集隔離來降低鎖定問題的發生
http://caryhsu.blogspot.tw/2012/01/blog-post_31.html


錯誤訊息:
訊息 1468,層級 16,狀態 4,行 4
無法在資料庫 "Northwind" 上執行作業,因為它牽涉到資料庫鏡像工作階段。
訊息 5069,層級 16,狀態 1,行 4
ALTER DATABASE 陳述式失敗。


這個問題主要是由於Principal與Mirror之間需要進行同步確認,所以會保持連線,但是進行快照集隔離時需要變更資料庫的設定,所以不能有其他的使用者連線。

其實這個問題,解決方法上很簡單,只能透過 [移除鏡像] 的方式進行即可,但是這時候大家可能會有一個疑問,那就是一定要移除嗎?可否透過暫停Database Mirroring的方式,但可惜的是,這個方法是不行的,只能透過移除的方式,當設定好快照集隔離後再重新設定Database Mirroring即可。



參考連結:
How to Enable RCSI for a Database with Database Mirroring
http://blogs.msdn.com/b/sqlcat/archive/2010/03/16/how-to-enable-rcsi-for-a-database-with-database-mirroring.aspx


關鍵字:SQL ServerDatabase MirroringSnapshot Isolation LevelALTER DATABASE

沒有留言:

張貼留言