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

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

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/735c36d597c9865554b8-SNAGHTML18ae2482.png)

從錯誤訊息來看，我可以看得出問題是發生在 “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 套件或組件的載入過程，當然發生例外或錯誤時，也都會被紀錄在這個檔案裡，以我這次遇到的例子來說，我用錯誤訊息裡的關鍵字搜尋到以下片段：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/44a8f70cdf850ae0c222-SNAGHTML18bf25d9.png)

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

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

還好我之前寫過【[如何利用「資料庫發行精靈」將新版 SQL 資料庫降級成舊版](/post/2011/05/21/Using-Database-Publishing-Wizard-downgrade-SQL-Server-Database.aspx)】這篇文章，而且還詳細研究過 **資料庫發行精靈** (Database Publishing Wizard) 的歷史，因此非常清楚我的 SQL Server Database Publishing Wizard 1.4 版可能已經被移除了！

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/b893c62b050f6d44a171-image_1401.png)

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/b1f11b7e8ae985d1b854-image_1402.png)

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/b4f1dbaee1086d3f37c5-image_1403.png)

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/249043066cf11b418bfd-SNAGHTML18c91621.png)

這時我也頓悟，原來微軟不開放 SQL Server Database Publishing Wizard 1.4 版的獨立下載連結是因為這樣，但不甘心的我還是費些功夫找到了 [個別部署 Visual Studio 元件](http://msdn.microsoft.com/zh-tw/library/vstudio/ee225240.aspx) 這個網頁，找到了獨立安裝 SqlPubWiz.msi 的指令參數，不過該網頁的指令參數是錯誤的，我修改成以下才成功：

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

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

**相關連結**

-   [Deploying Visual Studio Components Individually](http://msdn.microsoft.com/en-us/library/ee225240.aspx)
-   [如何利用「資料庫發行精靈」將新版 SQL 資料庫降級成舊版](/post/2011/05/21/Using-Database-Publishing-Wizard-downgrade-SQL-Server-Database.aspx)
-   [Visual Studio Administrator Guide](http://msdn.microsoft.com/en-us/library/ee225238.aspx)
