引言
今天接到了一個(gè)需求,服務(wù)器上的數(shù)據(jù)庫需要從SQL Server2008升級(jí)到2012。根據(jù)之前的經(jīng)驗(yàn),感覺是一個(gè)非常有意思的過程(事實(shí)上也是。這個(gè)過程也給了我一些觸動(dòng)與啟發(fā),因此,便記錄了自己的踩坑過程以及解決方案,還有安裝過程的體會(huì)。
升級(jí)步驟
啟動(dòng)SQL Server2012的安裝引導(dǎo)程序,中間的過程都很順利,具體的操作步驟可參考微軟官方的幫助文檔,幫助文檔鏈接如下。
https://learn.microsoft.com/en-us/previous-versions/sql/sql-server-2012/bb677622(v=sql.110)?redirectedfrom=MSDN
https://learn.microsoft.com/en-us/previous-versions/sql/sql-server-2012/ms144267(v=sql.110)
在升級(jí)規(guī)則檢測(cè)的時(shí)候卻出現(xiàn)了兩個(gè)異常,如下圖所示。
其中:
- 第一個(gè)異常產(chǎn)生的原因是:版本為SQL Server2008 R2 Sp1時(shí),需要安裝Sp2補(bǔ)丁包之后,才可以升級(jí)到SQL Server2012
- 第二個(gè)異常產(chǎn)生的原因是:在第一次安裝失敗后,服務(wù)器上存在部分已經(jīng)安裝的SQL Server實(shí)例,并且此時(shí)的狀態(tài)為“非活動(dòng)”狀態(tài)。對(duì)于該問題:微軟官方給出的原因如下。
出現(xiàn)此問題的原因是在第一次安裝失敗后,服務(wù)器上存在部分安裝的SQL Server實(shí)例。 如果安裝失敗,SQL Server安裝程序不會(huì)回滾安裝。 部分安裝的實(shí)例不包括你嘗試安裝的SQL Server版本,例如企業(yè)版、標(biāo)準(zhǔn)版或評(píng)估版。 嘗試在同一臺(tái)服務(wù)器上安裝同一版本時(shí),安裝程序?qū)⒉檎椰F(xiàn)有實(shí)例。 但是,安裝程序無法確定要安裝的SQL Server版本。 因此,安裝失敗。
對(duì)于這個(gè)解釋,我個(gè)人認(rèn)為是SQL Server本身存在巨大的問題。安裝失敗后無法進(jìn)行回滾安裝這一點(diǎn),對(duì)于用戶使用非常不友好。
針對(duì)這兩個(gè)升級(jí)問題,下面進(jìn)行逐一解決。
安裝SQL Server 2008 R2 sp2
該問題解決較容易,直接在微軟中心的Microsoft 365上找到對(duì)應(yīng)的安裝包即可。下載鏈接為:
https://www.microsoft.com/zh-CN/download/details.aspx?id=30437
點(diǎn)擊"Download"按鈕,出現(xiàn)的界面如下圖所示。根據(jù)自己機(jī)器的處理器架構(gòu)進(jìn)行選擇即可,我進(jìn)行更新的機(jī)器為Windows Server2008,因此選擇的架構(gòu)為x64版本。
該補(bǔ)丁包的具體安裝方式與SQL Server2012的安裝方式相同。如無特殊需要,一路點(diǎn)擊"下一步"即可完成安裝。
清除處于非活動(dòng)狀態(tài)的SQL Server實(shí)例
對(duì)于該升級(jí)問題,微軟官方也給出了相應(yīng)的原因解釋以及解決方案。不幸的是,由于我的數(shù)據(jù)庫水平太差,找了很久才找到。對(duì)應(yīng)的鏈接地址如下:
https://learn.microsoft.com/zh-CN/troubleshoot/sql/install/remove-partial-installation
在該幫助文檔的解決方案中,提到了導(dǎo)航到“Summary.txt”文件設(shè)置日志文件。然后在該日志文件中,我看到確實(shí)存在一些處于非活動(dòng)狀態(tài)的數(shù)據(jù)庫服務(wù),如圖所示。
然后我開始查看安裝過程的日志信息,由于對(duì)數(shù)據(jù)庫安裝過程中的日志文件不熟悉。因此,又找到了關(guān)于日志文件的說明。對(duì)應(yīng)的鏈接地址如下:
https://learn.microsoft.com/zh-CN/sql/database-engine/install-windows/view-and-read-sql-server-setup-log-files?view=sql-server-ver16
在這篇幫助文檔中,詳細(xì)介紹了各個(gè)日志文件夾/文件的作用以及存放的位置。但是,問題并沒有解決。然后,我在微軟社區(qū)找到了另一篇文章。在這里,我找到了解決問題的方法。對(duì)應(yīng)的鏈接地址如下:
https://social.technet.microsoft.com/wiki/contents/articles/38000.sql-server-troubleshooting-the-instance-id-mssqlserver-is-already-in-use-by-sql-server-instance-mssqlserver-inactive.aspx?Sort=MostRecent&PageIndex=1
在這篇文章中,它介紹到有一個(gè)"Datastore_Discovery.xml"的文件位于日志目錄下,在里面找到不活動(dòng)狀態(tài)的產(chǎn)品編碼,然后使用命令行將其卸載即可。結(jié)合兩篇文章,我順利找到了該文件,并通過關(guān)鍵字搜索,找到了不活動(dòng)狀態(tài)的產(chǎn)品編碼,如下圖所示。
然后,啟動(dòng)“命令提示符”,輸入如下語句,即可卸載不活動(dòng)狀態(tài)下的SQL Server實(shí)例引擎。
msiexec /x {$ProductCode}
注:$ProductCode表示產(chǎn)品編碼,如果有多個(gè)不活動(dòng)的產(chǎn)品,應(yīng)將其全部刪除
卸載完成后,重新啟動(dòng)SQL Server2012安裝向?qū)?,即可順利完成?duì)數(shù)據(jù)庫的升級(jí)。文章來源:http://www.zghlxwxcb.cn/news/detail-450982.html
一些體會(huì)
事實(shí)上,在我接觸過的產(chǎn)品中,微軟的產(chǎn)品相對(duì)來說幫助文檔是比較齊全的。只要你愿意看日志,愿意查幫助文檔,愿意上社區(qū)搜一些關(guān)于issue的提問,那么,我認(rèn)為99%的問題都可以得到很好的解決。
但是,如我提到的一樣,如何能夠快速定位到問題對(duì)應(yīng)的文檔呢?我認(rèn)為,需要做到如下兩步:文章來源地址http://www.zghlxwxcb.cn/news/detail-450982.html
- 對(duì)產(chǎn)品有足夠的熟悉。知道問題的根源發(fā)生在哪里,比如在升級(jí)數(shù)據(jù)庫的過程中,問題的根源是在數(shù)據(jù)庫引擎,還是在數(shù)據(jù)庫管理工具,還是在客戶端的兼容性
- 對(duì)文檔的整體結(jié)構(gòu)有所了解。好的幫助文檔就像一本小冊(cè)子,如果你想了解它,那么,你首先應(yīng)該知道小冊(cè)子的目錄長(zhǎng)什么樣。
到了這里,關(guān)于SQL Server2008數(shù)據(jù)庫升級(jí)至SQL Server2012的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!