The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何在 Visual Studio 2010 發生錯誤時進行問題分析與解決

今天開啟 Visual Studio 2010 的時候發現有些功能開始不能用了,費了一番功夫才找到問題是出在 Visual Studio 2010 內建的 SQL Server Database Publishing Wizard 1.4 被莫名原因移除了 (猜測跟我前天移除 Visual Studio 11 Beta 有關),我在【如何利用「資料庫發行精靈」將新版 SQL 資料庫降級成舊版】這篇文章曾經提過我找不到有可獨立下載的地方,但我又實在不願意重裝一次 Visual Studio 2010 + SP1,所以花了一個小時把這個問題解決,順便在此分享 Visual Studio 2010 抓錯誤的心得。

問題是這樣發生的,我在伺服器總管裡嘗試開啟曾經建立過的 SQL 資料庫連接,這時立即發生如下錯誤

從錯誤訊息來看,我可以看得出問題是發生在 “PublishWizard” 相關的問題,不過還無法確診!接著我照著錯誤訊息上面的建議,重新啟動 Visual Studio 2010 時在執行 devenv.exe 時加入 /log 參數,其指令如下:(備註:我額外加上 /resetskippkgs 參數是為了縮小檢測的範圍,減少擴充套件或外掛的干擾)

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" /resetskippkgs /log

等 Visual Studio 2010 完整啟動之後,請先再次重現錯誤,以我的例子來說,就是打開伺服器管理員並開啟資料庫連接,看到相同的錯誤訊息後,就可以用 Notepad 開啟 Visual Studio 的記錄檔,路徑如下:

%APPDATA%\Microsoft\VisualStudio\10.0\ActivityLog.xml

在這個記錄檔裡,你會看到非常詳細的 Visual Studio 2010 套件或組件的載入過程,當然發生例外或錯誤時,也都會被紀錄在這個檔案裡,以我這次遇到的例子來說,我用錯誤訊息裡的關鍵字搜尋到以下片段:

由於明確看出「系統找不到指定的檔案」,因此我試圖進入以下目錄,結果卻驚覺該目錄已經不存在了!

C:\Program Files (x86)\Microsoft SQL Server\90\Tools\Publishing\1.4

還好我之前寫過【如何利用「資料庫發行精靈」將新版 SQL 資料庫降級成舊版】這篇文章,而且還詳細研究過 資料庫發行精靈 (Database Publishing Wizard) 的歷史,因此非常清楚我的 SQL Server Database Publishing Wizard 1.4 版可能已經被移除了!

有趣的是,我當時花了不少時間研究資料庫發行精靈的版本變更歷史,竟然在這個時候派上用場,當時還真不知道為何要研究,現在回想起來還真有趣! ^_^   ( 以下這段話是從該文章裡節錄出來的 )

接著我到控制台中搜尋 SQL Server Database Publishing Wizard 確實發現我的 1.4 真的不見了。

另一個棘手的問題又再次發生,去年寫文章時我找不到 SQL Server Database Publishing Wizard 1.4 版的下載連結,因此我直接從 Visual Studio 2010 的安裝光碟 (ISO) 去找檔案,結果還真給我找到了。

原本想說只要 Double Click 就可以再次把 SQL Server Database Publishing Wizard 1.4 給安裝起來,結果竟然發生悲劇,安裝時卻看到如下圖的訊息,這個 SqlPubWiz.msi 安裝檔只能由 Visual Studio 2010 的安裝程式進行安裝,那不就等於要重裝 Visual Studio 2010 嗎?這原本就不是我想走的路!

這時我也頓悟,原來微軟不開放 SQL Server Database Publishing Wizard 1.4 版的獨立下載連結是因為這樣,但不甘心的我還是費些功夫找到了 個別部署 Visual Studio 元件 這個網頁,找到了獨立安裝 SqlPubWiz.msi 的指令參數,不過該網頁的指令參數是錯誤的,我修改成以下才成功:

SqlPubWiz.msi IsInvokedFromVS=1 /log "%TEMP%\dd_SqlPubWiz_14_msi.txt"

成功安裝之後,再次開啟 Visual Studio 2010 並確認問題完全修復,本次救援任務~ 成功! ^_^

 

相關連結