在前面的文章中有介紹到如何透過快照集隔離 (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 Server、Database Mirroring、Snapshot Isolation Level、ALTER DATABASE
沒有留言:
張貼留言