SQL Server升級(jí),真如想象中那樣簡單?
并不是所有的SQL服務(wù)器升級(jí)都需要復(fù)雜的計(jì)劃和大量的工作。有時(shí),你可以使用一些簡單的方法來升級(jí)SQL Server,在升級(jí)過程中,你并不會(huì)因?yàn)榉椒ê唵味鴵p失什么,而節(jié)省下來的時(shí)間,你還可以用來進(jìn)行下一步的計(jì)劃。然而,如果你想要簡化升級(jí)過程,你必須知道在什么時(shí)候流程簡化對(duì)你來說安全可靠的,以及何時(shí)你必須付出額外的努力,這是至關(guān)重要的。
本文的目的是為你提供一個(gè)框架,有了它,你就可以較為容易地在數(shù)據(jù)庫升級(jí)過程中,確定所需的工作量,以及需要多少資源等。
SQL Server 升級(jí)的分類
要確定升級(jí)所付出的努力和需要消耗的成本,你有很多因素需要考慮。在本文中,我們將討論一些最常見的問題。當(dāng)然,還有其他有助于判斷SQL服務(wù)器升級(jí)所需付出成本的因素,但本文討論的因素是***有代表性。
第三方應(yīng)用程序。在許多企業(yè)中,大多數(shù)的數(shù)據(jù)庫是通過獨(dú)立軟件供應(yīng)商(isv)購買的,他們提供標(biāo)準(zhǔn)流程,以幫助用戶將SQL Server升級(jí)到***版本。如果你想升級(jí)來自第三方ISV的數(shù)據(jù)庫,遵循供應(yīng)商規(guī)定的升級(jí)策略是***的做法。它能夠幫助你預(yù)先確定升級(jí)需要多大的工作量。
任務(wù)關(guān)鍵型應(yīng)用程序。任務(wù)關(guān)鍵型應(yīng)用程序需要更為健壯的升級(jí)計(jì)劃和更多的測(cè)試工作。對(duì)于較小的應(yīng)用程序,付出的工作量應(yīng)該相應(yīng)減少,因?yàn)樯?jí)造成功能受損的風(fēng)險(xiǎn)較低,且恢復(fù)所需的工作相對(duì)較少,對(duì)業(yè)務(wù)影響也不會(huì)很大。這個(gè)因素與當(dāng)前數(shù)據(jù)庫架構(gòu)是否具有高可用性以及是否具有災(zāi)難恢復(fù)組件等條件密切相關(guān)。如果答案是肯定的,那我們可以預(yù)料到,盡可能縮短停機(jī)時(shí)間是至關(guān)重要的。這增加了升級(jí)計(jì)劃的準(zhǔn)備時(shí)間和升級(jí)本身的測(cè)試時(shí)間。
臨時(shí)SQL。當(dāng)應(yīng)用程序運(yùn)行在一個(gè)數(shù)據(jù)庫上,它生成大量的SQL查詢,且這些查詢并沒有嵌入在存儲(chǔ)過程中時(shí),升級(jí)所需的工作量將增加。類似微軟的內(nèi)置的Upgrade Advisor之類的工具,將會(huì)檢查數(shù)據(jù)庫本身的元數(shù)據(jù),包括存儲(chǔ)過程和其他數(shù)據(jù)庫對(duì)象。不僅如此,Upgrade Advisor還有其他作用,因?yàn)樗梢詸z查臨時(shí)SQL語句追蹤文件。通常遇到的問題,可以通過捕獲和分析特定跟蹤文件來解決,這些文件提供了較為廣泛的SQL代碼覆蓋率。
大型數(shù)據(jù)庫。在這種情況下,大的定義是相對(duì)主觀的。例如,10年前,1 TB的數(shù)據(jù)庫被認(rèn)為是大型數(shù)據(jù)庫,但在如今這已司空見慣。以gb或tb為單位的數(shù)據(jù)以及數(shù)據(jù)庫對(duì)象的數(shù)量會(huì)影響升級(jí)數(shù)據(jù)庫的時(shí)間,如果需要回滾,也會(huì)影響回滾完成的時(shí)間。
副本。這不會(huì)影響所有數(shù)據(jù)庫使用者,但如果在你的數(shù)據(jù)庫環(huán)境中有SQL Server副本,副本組件的升級(jí)順序是至關(guān)重要的,這與升級(jí)過程的持續(xù)性同樣重要。副本在升級(jí)過程中可能會(huì)成為系統(tǒng)處理的一個(gè)主要因素,以何種順序完成升級(jí),將會(huì)影響你所需要的工作量。
圖1:用于確定升級(jí)過程所需工作量的決策樹
升級(jí)項(xiàng)目分類
一旦你考慮到各種因素,你可以根據(jù)SQL Server升級(jí)項(xiàng)目涉及的因素將其進(jìn)行分類。這里有幾種類型的升級(jí)項(xiàng)目,以復(fù)雜度從高到低排列;它們之間的關(guān)系,以及與各種因素之間的聯(lián)系,如圖1所示。
復(fù)雜升級(jí)。這是一種升級(jí)的類型,它需要在計(jì)劃和執(zhí)行方面付出了大量的努力。確保盡可能的考慮多種情況,并在升級(jí)中不斷的測(cè)試是至關(guān)重要的,為了減少數(shù)據(jù)庫和應(yīng)用程序升級(jí)時(shí)的停機(jī)時(shí)間。這些升級(jí)項(xiàng)目往往會(huì)給項(xiàng)目人員帶來很大壓力,它們需要付出額外的努力,以確保升級(jí)的成功。通常,會(huì)有正式的項(xiàng)目計(jì)劃和管理流程,以協(xié)調(diào)企業(yè)內(nèi)部的工作安排,包括一個(gè)升級(jí)過程中的測(cè)試,以及升級(jí)失敗的回退計(jì)劃,以備不時(shí)之需。
基本升級(jí)。這種類型的項(xiàng)目會(huì)考慮到一些基本的測(cè)試,但它通常不需要部署團(tuán)隊(duì)來親自完成這些測(cè)試。如果由他們完成,在涉及到任務(wù)關(guān)鍵型應(yīng)用程序時(shí),將依然需要很多的工作,而且這需要采取合理的預(yù)防措施。至少,這包括升級(jí)之前對(duì)數(shù)據(jù)庫的備份,以及創(chuàng)建一個(gè)可靠的回退計(jì)劃。
有回退計(jì)劃的非關(guān)鍵升級(jí)。這種類型的升級(jí)過程用于那些在自身領(lǐng)域十分重要的數(shù)據(jù)庫,這些數(shù)據(jù)庫并不涉及關(guān)鍵業(yè)務(wù)和監(jiān)管合規(guī)問題。此類情況下,數(shù)據(jù)庫升級(jí)時(shí),如果需要,退回計(jì)劃將被執(zhí)行。
供應(yīng)商指導(dǎo)下的升級(jí)計(jì)劃。這也許是最常見的SQL服務(wù)器升級(jí)項(xiàng)目。有時(shí)候,這樣的升級(jí)就是供應(yīng)商對(duì)用戶說我們現(xiàn)在支持新版本,就像一句話這么簡單,但它也可能更為復(fù)雜。例如,如果你的前端程序連接到了數(shù)據(jù)庫的后端,你可能需要將前端應(yīng)用程序升級(jí)到新版本。不同的供應(yīng)商,細(xì)節(jié)可能會(huì)有很大不同。在企業(yè)內(nèi)部,你可以把它當(dāng)做一個(gè)基本升級(jí)項(xiàng)目來看待。
隨著數(shù)據(jù)庫升級(jí)項(xiàng)目類型的確定,你還需要內(nèi)部應(yīng)用程序所有者對(duì)計(jì)劃的簽字認(rèn)可。根據(jù)工作安排,設(shè)定升級(jí)預(yù)期,估計(jì)升級(jí)所帶來的效益。對(duì)于所有類型的數(shù)據(jù)庫升級(jí),你要確保至少從Upgrade Advisor開始你的升級(jí)過程,并及時(shí)修復(fù)發(fā)現(xiàn)的問題。在沒有進(jìn)行基本的審查前,不要開始升級(jí)任務(wù)。