SQL Server數據庫升級需要DBA進行大量的規劃與測試。大多數的時間里,升級過程也許不會出現任何問題,但是一些潛在的威脅絕不能忽視。在本文中,SQL Server專家Roman Rehak將為您介紹數據庫升級或者遷移過程中,DBA應該注意哪些問題。
升級測試不足。在SQL Server數據庫升級出現問題的情況下,其中最常見的原因就是測試不足。DBA不僅需要對每一個連接數據庫的應用進行測試,還需要測試任何一個執行數據庫代碼的程序,比如SSIS包、數據庫工具、輔助存儲過程以及復制等。如果你使用SQL Server 2000版本的話,那么測試就變得更加重要。
升級到SQL Server 2005時,許多語法都發生了變化,還包括T-SQL相關的特性。舉例來說,當使用SQL Server 2005 NOLOCK語句時,你需要加上WITH。測試出錯語法的方法有很多中,這里介紹一個最直接的方法,就是針對所有存儲過程使用ALTER命令,對T-SQL代碼進行重新編譯。但是這個方法無法找到動態SQL中的語法錯誤,所以這里沒有捷徑,你需要執行所有的數據庫代碼。
沒有認真閱讀升級白皮書。DBA進行SQL Server數據庫升級時,除了基本的SQL Server在線手冊之外,還可以參考微軟提供的升級白皮書,該白皮書針對了所有版本的SQL Server。盡管它看起來比較枯燥乏味,而且大部分內容你都不一定能夠用到,但是從頭到尾閱讀一遍,將重點內容標注下了,我想這對DBA是有百利而無一害的。
進行升級之前,需要弄清楚哪些功能在新的版本中是被廢棄的,如果發現這樣的功能,DBA應該及時對相關代碼進行修改和調整。如果在升級之前沒有多余時間閱讀白皮書,那么一定要記住有些功能在下一個版本中是無法運行的。
主觀認為現有硬件可以運行新版本數據庫。通常情況下,微軟在發布每個新版本的SQL Server數據庫之前都會預先提供一些技術文檔,以向用戶介紹新版本的數據庫有哪些新特性。許多DBA都會犯這樣的低級錯誤,就是他們認為現有的硬件可以運行新的數據庫。大多數情況下,這樣的問題可能不會發生,但是并不是所有服務器都能滿足新版本的硬件需求。
舉個例子,SQL Server 2005在系統配置要求上遠遠超過SQL Server 2000,從實際應用上來看,有DBA表示服務器在升級SQL Server之后運行速度大大降低。微軟官方已經承認,在極少數情況下,安裝SQL Server 2005之后數據庫性能不升反降。那么找到真相的唯一方法就是進行性能基準測試,你可以使用相同的服務器安裝不同版本的SQL Server,然后對應用性能進行對比。
另外我們還可以使用虛擬化技術來進行對比,在一些情況下,數據庫軟件的升級也意味著硬件服務器同樣需要升級,特別是服務器使用時間較長的時候,DBA應該充分考慮到硬件的問題。
沒有更改兼容性版本。在進行數據庫升級時,DBA需要對兼容性級別進行設置,這使得你可以在不更改語法的情況下運行新版本數據庫。當你從早期版本數據庫恢復到新版本時,SQL Server將保留兼容性版本,也就是說它可以讓你運行那些無效的語法。這個功能是為了讓DBA能夠有更多的時間對語法進行修改。
如果你將數據庫設置在早期版本的兼容模式下,你可能會誤以為升級工作已經完成,因為在測試的時候沒有出現任何問題。但是如果你之后再更改到新版本的兼容模式下,T-SQL就會出現問題。因此一定要記住,你需要對所有數據(包括系統數據庫)的兼容模式進行修改,當你需要運行之前版本的SQL Server時,你還可以改回去。
沒有制定回滾計劃。無論你進行何種規模的數據庫升級,一定要確保當遭遇故障時能夠對SQL Server進行回滾操作。“升級之前做好數據庫備份”是所有DBA都知道的,但是說到容易做到難,特別是當你使用了復制之后,并不是每個DBA都會恢復所有數據庫并redo所有SQL Server。
對于一個24/7運營的企業來說,長時間宕機造成不必要的用戶流失可以說是無法接受的。在這些環境下,數據庫升級需要最小的停機時間,而且DBA無法接受升級中出現各種各樣的錯誤。為將風險降到最低,我們可以現在新的機器上運行SQL Server新的數據庫,之前的機器還將運行。如果新的測試顯示出現重大問題,你還可以利用之前的設置繼續工作,直到將所有的問題都解決為止。
原文鏈接:http://www.searchdatabase.com.cn/showcontent_50751.htm