在每個遊戲初期一定要找到的不是神兵利器、不是加點儲值,而是我們每個人都最需要的那個歸屬 ... 倉庫!!! ( 大誤
相信資訊基礎的各位都知道,資料庫之於程式就如倉庫之於練功,都是同等重要的事情。
沒有倉庫的遊戲讓人生不如死( 讓我想到以前經歷過的AIKA之亂 XD ),而沒有資料庫的程式也讓人萬念俱灰
好的,那麼廢話不能超過三行,下面我們來談談認真的。(正坐)
-----------說是開始認真但仍舊廢話的分隔線-----------
人參總是遇到困難才會發現新的道路,過去一直活的太舒坦,電腦中不論檔案、筆記或是資料庫,什麼都不缺。
結果一旦遇到就發現死定了。
最近經手的某個項目,開發與測試是用同一個資料庫,DBA也拒絕另外開一個資料庫供開發使用
而因為需求異動的因素,在資料結構與程式邏輯都有不小的影響。
比較明顯的狀況或說結論就是 :
一開始進行開發,測試中的User就哭天搶地。
但不更動資料庫無法進行開發的我,只感到日月無光。
這麼一個打架的環節,妳動我不動,我動妳不動,還真的不知道怎麼解。
友人阿V知道後,只說了一句:「那就用LocalDB啊!!」,無奈阿V也沒用過,無法解釋得更清楚
只好拿出法師的毅力先來試試看吧 ! ( ? )
***SQL Server Express***
在講LocalDB前,先來說說SQL Server Express。大多人應該都比較清楚Express~如果已經瞭解的人可以直接跳過哦 : LocalDB傳送門
依據維基百科的說明 : 「Microsoft SQL Server Express是微軟所開發的關聯式資料庫產品SQL Server的免費下載版本,可自由下載、分發(需經註冊)及使用。這個版本的設計是專門為嵌入式系統或較小型的程式而設計。其技術限制使之無法適用於大規模的部署。」,其技術限制包含 : 限制最大為10GB、沒有Agent服務以及可使用的記憶體量最高僅1GB。
SQL Server Express ( 2017、2019 ) 有三款安裝版本,分別為
- 標準版本
- 高級版本,又稱Express Advanced
- LocalDB,比標準版本更輕便的資料庫,專供開發人員使用,在用戶模式下運行
LocalDB 僅包含啟動 SQL Server Database Engine 所需的最少檔案,快速且零配置 ( zero-configuration ) 安裝,設定與管理上更為簡單。
一般開發時都存放在 App_Data 資料夾,以MDF檔作為資料庫,可撰寫Transact-SQL。但無法與IIS作用。
**安裝LocalDB**
要取得 LocalDB 有三種方式
- 直接下載LocalDB套件
- 下載 Express Advanced ,其中也會包含 LocalDB
- 開發人員可以在 Visual Studio 安裝時,一併安裝 LocalDB
並且國外有位大神整理了一份非常清楚的2014功能差異比較,有需要的人歡迎 參考
**執行個體管理**
LocalDB 的執行個體是使用 SqlLocalDB.exe 公用程式來管理。可在 SqlLocalDb 建立 LocalDB 的新執行個體,也可以啟動或停止。
另外要注意,LocalDB 的執行個體定序是設定為 SQL_Latin1_General_CP1_CI_AS,而且無法變更。
SqlLocalDB.exe 公用程式位於 C:\Program Files\Microsoft SQL Server\ [你資料庫版本的數字, ex : 130] \Tools\Binn
開啟 CMD 至公用程式所在位置,輸入指令 : sqllocaldb -? ,即會列出相關操作說明
其餘相關指令還有很多,這邊就暫不一一列出,有需要可自行查看或搜尋
**查看所有執行個體**
使用 SqlLocalDB.exe 的 info 使令
開啟 cmd 輸入 SqlLocalDB.exe info
或是在 info 後面加上執行個體的名稱,取得其資訊
**連線字串**
當安裝完成後,若要連線到 LocalDB ,則需要產生連線字串。
與一般連線字串的差異在於,LocalDB 的 server 會設定為 (localdb)\MSSQLLocalDB(執行個體名稱)。
而在 SQL Server 2014 之前是單一 v 字元後面加 LocalDB 及版本號,如 : (LocalDB)\v11.0
若要使用檔案名稱連接到特定資料庫,則會多一個 AttachDbFileName 屬性。
一般連線字串 :
LocalDB 連線字串 :
**SQL Server Management Studio (SSMS)**
若想以SSMS開啟,可以在Server Name設定 : (localdb)\要開啟的執行個體名稱
如果出現 Cannot connect to (localdb)\執行特體名稱,可以用前面的 info 指令看看是不是其狀態為 「已停止」
若是的話,可透過指令 : 『 SqlLocalDB.exe start 執行個體名稱 』來啟動
相對的,想關閉執行個體則輸入 : 『 SqlLocalDB.exe stop 執行個體名稱 』
*** 在ASP.NET MVC 中使用 LocalDB ***
這裡預設各位已經知道如何開啟新專案,或是已經有一個使用中的 MVC 專案。
- 於 App_Data 右鍵【加入】→【新增項目】
- 選擇【SQL Server資料庫】( 在 資料 類別中 )
- App_Data中會增加一個 mdf 檔,可右鍵「開啟」,或是以 CTRL+W 再 CTRL + L,開啟伺服器總管
- 這裡的設定跟SSMS差不多,就不多加贅述。可以開始建立資料表了~
***結語***
以自己參與過的團隊經驗來說,用到LocalDB的機會不大,甚至可說是完全沒有,幾乎都是開發人員共連測試DB。
但在查找的過程中,有不少分享者的單位都是使用LocalDB,並且遇到一些特殊的情境或狀況 : 像是版本不一致或是需要轉移等。
因目前大致上是以自己開發為主,以「介紹」與「設定」為重心。
所以在上述的團隊分享或版本變更等狀況,比較沒有經驗,此篇就不轉述,畢竟自己沒遇過或是沒有重現那個情境,寫出來也只是拾人牙慧。
待哪天用著用著真的遇到了什麼問題,再來另外寫一篇 LocalDB 深入的疑難排解吧~
有看完的文章還是會放在下方參考資料,也歡迎有需要深入研究LocalDB的人員分享~
參考資料 :
[ASP.NET MVC] 建立SQL Server LocalDB
[鐵人賽][Denali 新特性探險19]SQL Server Express LocalDB(1)
[鐵人賽][Denali 新特性探險20]SQL Server Express LocalDB(2)
如何連接並存取 SQL Server 2012 Express LocalDB
Is there a difference between SQL Server Express (2012) and LocalDB?