﻿# 如何下載與升級 SQL Server Express LocalDB 到最新版

早期的 SQL Server Express LocalDB 還蠻簡單的，隨便搜尋就可以下載的到，但是這幾年微軟的組織發展太快，網站的結構也有大幅異動，許多以前可以下載到的連結現在也都失效。不單單失效而已，我光是想要下載最新版 LocalDB 都要花上好幾分鐘才能找到連結。

### 專案需求

因為最近要幫客戶部署一個網站與資料庫到測試環境，而客戶提供的 SQL Server 資料庫使用 `v14` 版本，而我本機 LocalDB 的版本卻只有 `v13` 而已，因此無法還原資料庫。

我相信有許多人並不清楚 `v13`, `v14` 與 `v15` 的意思，這裡建議可以參考以下網址查詢 RTM 版本與 SQL Server 產品名稱的對應關係：

-   [How to determine the version, edition, and update level of SQL Server and its components](https://support.microsoft.com/en-us/help/321185/how-to-determine-the-version-edition-and-update-level-of-sql-server-an)
-   [History of Microsoft SQL Server - Wikipedia](https://en.wikipedia.org/wiki/History_of_Microsoft_SQL_Server)
-   [How to tell what SQL Server version you are running](https://www.mssqltips.com/sqlservertip/1140/how-to-tell-what-sql-server-version-you-are-running/)

簡言之，`v13` 就是 **SQL Server 2016**，而 `v14` 就是 **SQL Server 2017**，而 `v15` 就是 **SQL Server 2019**！

如果你用 SSMS (SQL Server Management Studio) 連接 SQL LocalDB 的話，也可以很容易從伺服器連接得知目前 SQL Server 版本，如下圖示：

![透過 SSM 查看 SQL Server 版本](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/6f47085fa4e0878e4824-74607512-5e35c780-5114-11ea-954b-625ff5ed16a6.png)

### 下載 SQL Server 本地資料庫 (LocalDB)

我想大家都一樣，下載 LocalDB 的第一步，就是上網搜尋這個關鍵字：`SQL LocalDB Download`

但是在網路上最容易找到的版本為 [Microsoft® SQL Server® 2012 Express](https://www.microsoft.com/en-us/sql-server/sql-server-downloads)，這是最早期的版本，這可是 `v11` 啊，完全不能用！

除此之外，你找到的就是 [SQL Server Express LocalDB - SQL Server | Microsoft Docs](https://learn.microsoft.com/zh-tw/sql/database-engine/configure-windows/sql-server-express-localdb?view=sql-server-ver15) 這份官方文件，而且提供的下載連結是錯誤的，他會自動幫你轉向到 [SQL Server 的產品官網](https://www.microsoft.com/zh-tw/sql-server/sql-server-2019)，即便你點擊 [立即試用](https://www.microsoft.com/zh-tw/sql-server/sql-server-downloads) 到下載頁面，也完全找不到 LocalDB 的下載選項，這點真的是有點困擾！

> 這裡有個重要的觀念一定要跟大家分享，那就是我們常用的 LocalDB 其實是 SQL Server Express 產品的一部份，如果你要安裝最新版的 SQL Server LocalDB，那就要下載 [SQL Server Express](https://go.microsoft.com/fwlink/?linkid=866658) 的安裝檔。這個安裝檔其實很小，只有 `5.07MB` 而已，下載後的檔名是 `SQLServer2017-SSEI-Expr.exe`！

執行[安裝程式](https://go.microsoft.com/fwlink/?linkid=866658)後的畫面如下：

![下載媒體](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/9977a16711fb3677c239-74607789-c4bbe500-5116-11ea-9881-0c794337c6c5.png)

接著請點選 **LocalDB (46 MB)** 封裝、選取下載位置，然後按下 **下載** 按鈕

![下載](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/91198bc19649cc596256-74607804-eae18500-5116-11ea-990c-91c966c82103.png)

下載成功後按下 **開啟資料夾** 按鈕

![開啟資料夾](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/59fa32e92ddd6de3ff62-74607838-2aa86c80-5117-11ea-8b21-83f65ee6fa28.png)

接著只要執行已下載的 `SqlLocalDB.msi` 安裝檔，即可將最新版 SQL LocalDB 安裝完成！

### 如何將現有執行個體升級

即便你安裝好新版的 SQL Server LocalDB，你現有的 SQL LocalDB 執行個體並不會自動升級，他還是執行舊版的 SQL Server 版本，因此你有兩個選項：

1.  保留舊的 LocalDB 執行個體，建立一個全新的執行個體
    
    假設新的執行個體名稱為 `MSSQLLocalDBV14`，你只要輸入以下命令即可建立：
    
    ```bash
    sqllocaldb create MSSQLLocalDBV14
    ```
    
2.  停止並刪除現有 `MSSQLLocalDB` 執行個體，並重建 `MSSQLLocalDB` 執行個體
    
    你可以先列出現有的 LocalDB 執行個體清單：
    
    ```bash
    sqllocaldb info
    ```
    
    透過輸入以下命令來進行 LocalDB 重建：
    
    ```bash
    sqllocaldb stop MSSQLLocalDB
    sqllocaldb delete MSSQLLocalDB
    sqllocaldb create MSSQLLocalDB
    ```
    
    重建的過程並不會移除資料庫檔案，但是在重建之後資料庫要自行 Attach 回去，預設資料庫檔案都會放在 `%USERPROFILE%` 使用者 Home 目錄下。重建後 Attach 資料庫的 T-SQL 指令碼如下範例：
    
    ```sql
    USE [master]
    GO
    CREATE DATABASE [SampleDB] ON
    ( FILENAME = N'C:\Users\User\SampleDB.mdf' ),
    ( FILENAME = N'C:\Users\User\SampleDB_log.ldf' )
    FOR ATTACH
    GO
    ```
    

### 關於 SQL LocalDB 的各種別名

微軟家大業大，一直改名就不說了，主要是同樣一個產品有好多種版本編號，光是一個 SQL LocalDB 就有很多種說法。

-   不含版本號的寫法
    -   LocalDB
    -   SQL LocalDB
    -   MSSQLLocalDB
    -   SQL Server LocalDB
    -   SQL Server Express LocalDB
-   包含版本號的寫法
    -   SQL LocalDB v11 (SQL Server 2012 Express LocalDB)
    -   SQL LocalDB v12 (SQL Server 2014 Express LocalDB)
    -   SQL LocalDB v13 (SQL Server 2016 Express LocalDB)
    -   SQL LocalDB v14 (SQL Server 2017 Express LocalDB)
    -   SQL LocalDB v15 (SQL Server 2019 Express LocalDB)
    -   SQL LocalDB v16 (SQL Server 2022 Express LocalDB)
    -   SQL Server 2012 LocalDB
    -   SQL Server 2014 LocalDB
    -   SQL Server 2016 LocalDB
    -   SQL Server 2017 LocalDB
    -   SQL Server 2019 LocalDB
    -   SQL Server 2022 LocalDB

### 相關連結

-   [SQL Server 下載 | Microsoft](https://www.microsoft.com/zh-tw/sql-server/sql-server-downloads)
-   [SqlLocalDB Utility](https://learn.microsoft.com/en-us/sql/tools/sqllocaldb-utility?view=sql-server-ver15)
-   [SQL Server 2012 Express LocalDB (SqlLocalDB) 深入剖析](/post/2012/09/03/SQL-Server-2012-Express-LocalDB-Quick-Start)
