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