最近有些同事因為避免 License 爭議,將 SQL Server 換成 Express 版本,但都有些使用不順的狀況....
SQL Server Express 版本前身是 MSDE ,基本上就是提供一個 SQL Engine ,當如果是小型應用的時候,可以比 Access 的 mdb 有更多的功能和效能,後續要升級也可以很容易將資料庫掛到其他不同的版本,程式不需要修改就可以輕易使用,加上其免費的特性,一值被一些不需要那麼完整 SQL Server 功能的系統所使用。
最近一些同事和朋友,不約而同因為 SQL Server License 的問題,紛紛改換成 SQL Server Express 的版本,雖然有些人的狀況是採用 Develop 版本會比較合適,但可能因為他們的資料庫也都不大,因此也都還是改採用 SQL Server Express 的版本。而就最近這幾天幫這些朋友處理的過程中,大致整理一下幾個常會被搞錯的問題。
1. Express 的版本不只一個 ? 在 SQL Server 2014 和之前的版本,都會有 SQL Server Express , SQL Server Express + 管理工具 和 SQL Server Express + Reporting Service 的三種不同版本可以用;而 SQL Server 2016 含以後的版本,因為 SSMS 已經被抽離出來了,因此會有 SQL Server Express 和 SQL Server Express + Reporting Service 的版本可以用。對我個人來說,我還是喜歡比較新版本的 SSMS,因為舊版本的 SSMS 時常在設定編輯畫面的字型有問題,所以我會比較喜歡裝單純的 SQL Server Express ,然後在搭配下載的 SSMS 來做使用。
2. 是否要安裝 Service Pack 呢 ? 目前有些新的封裝版本,其內建都已經有包含 Service Pack 了,但如果您一開始安裝是 RTM 的版本,或者是較舊的 Service Pack 版本的話,都是可以直接安裝 Service Pack 來做更新,不一定要把 SQL Server Express 移除再重新安裝新的版本來做使用。
3. 預設使用 Name Instance ? 當安裝 Express 版本和其他版本的時候,目前 Expres 版本預設是安裝在 SQLExpress,因此如果您要安裝的是要在預設的執行個體,那麼安裝的時候要記得調整一下,否則安裝完之後是不能調整的。
4. 服務啟動帳號不同 ? 如果前面一個步驟您沒有改為預設執行個體,那麼 SQL Server Express 的啟動帳號會是有帶 Instance 名稱的,一般來說是沒有甚麼影響,只是當你要備份或建立資料庫到非預設的目錄時候,要記得目錄的安全性設定,否則可能會有無法建立檔案的狀況發生。
5. 無法啟動 SQL Agent ? 當使用 SQL Server 組態管理員的時候,雖然會看到好像有安裝 SQL Server Agent 的服務,但要記得那個是假象。因為 SQL Server Express 並沒有提供 SQL Agent 的服務,因此您是無法啟動該服務的,也就不要浪費時間去調整了。
6. 只能使用 SSMS 連接 ? 改用其他工具或者是應用程式都無法連接,這一點也是非常多安裝 SQL Server Express 人員最常發生的問題,因為 SQL Server Express 的版本是給小型的本機系統所使用,因此預設只有將 Share Memory 的通訊協定有開啟,其他的通訊協定沒有開啟,因此很多人都會想說為什麼 SSMS 可以連上去,但怎麼好像他自己的其他應用程式連不上去,其實只是預設沒有將其他的通訊協定給開啟,因此只要去將您所需要的通訊協定給開啟,再去把 SQL Server 服務給啟動,應該就可以使用了。
7. 通訊協定有開啟,但怎麼還是不能連 ? 很多時候大家只有注意要把通訊協定給開啟,但卻沒有注意裡面的設定。以 TCP/IP 為例,預設因為是採用 TCP 動態通訊埠,所以這個時候 SQL Server 會自動取得一個連接 Port 來使用,如果您的 SQL Browse 沒有開啟,前端還是沒有辦法來連線,這裡我通常都會直接指定為 1433 的 Port ,這樣服務重新啟動之後,就可以使用 SQL Server 預設所使用的 TCP 1433 來連接了。
8.要怎麼確定 SQL Server 會開啟前面設定的 1433 Port ? 最簡單的方法,就是開啟 SSMS ,然後透過查詢錯誤記錄檔,就可以看到 SQL Server 重新啟動的時候,有按照您所設定的 Port 去監聽了,這樣一般通常都還是可以繼續正常使用了。
9.為什麼找不到維護計畫可以使用呢 ? 因為 SQL Server Epress 沒有 SQL Agent 可以使用,自然來說連 Maintain Plan 也就沒有辦法使用,因此在使用 SSMS 去連接的時候,你會忽然發現怎麼像是維護計畫,或者是 Database Mail 之類的功能,都沒有辦法在 SQL Server Express 的版本上去執行的。另外像是 SQL Server 的壓縮備份,這個也是無法在 SQL Server Express 版本去進行的。
當然除了上述一些常被詢問的問題之外,大家如果在使用時遇到 SQL Server Express 版本的限制,或許可以參考一下這兩篇文章來解決限制的問題