close

在每個遊戲初期一定要找到的不是神兵利器、不是加點儲值,而是我們每個人都最需要的那個歸屬 ... 倉庫!!! ( 大誤

相信資訊基礎的各位都知道,資料庫之於程式就如倉庫之於練功,都是同等重要的事情。

沒有倉庫的遊戲讓人生不如死( 讓我想到以前經歷過的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。

 


 

***所以什麼是LocalDB***

SQL Server Express ( 2017、2019 ) 有三款安裝版本,分別為

  1. 標準版本
  2. 高級版本,又稱Express Advanced
  3. LocalDB,比標準版本更輕便的資料庫,專供開發人員使用,在用戶模式下運行

LocalDB 僅包含啟動 SQL Server Database Engine 所需的最少檔案,快速且零配置 ( zero-configuration ) 安裝,設定與管理上更為簡單。

一般開發時都存放在 App_Data 資料夾,以MDF檔作為資料庫,可撰寫Transact-SQL。但無法與IIS作用。

**安裝LocalDB**

要取得 LocalDB 有三種方式

  1. 直接下載LocalDB套件
  2. 下載 Express Advanced ,其中也會包含 LocalDB 
  3. 開發人員可以在 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 -? ,即會列出相關操作說明

image

其餘相關指令還有很多,這邊就暫不一一列出,有需要可自行查看或搜尋

**查看所有執行個體**

使用 SqlLocalDB.exe 的 info 使令

開啟 cmd 輸入 SqlLocalDB.exe info

image

或是在 info 後面加上執行個體的名稱,取得其資訊

image

**連線字串**

當安裝完成後,若要連線到 LocalDB ,則需要產生連線字串。

與一般連線字串的差異在於,LocalDB 的 server 會設定為 (localdb)\MSSQLLocalDB(執行個體名稱)。

而在 SQL Server 2014 之前是單一 v 字元後面加 LocalDB 及版本號,如 : (LocalDB)\v11.0

若要使用檔案名稱連接到特定資料庫,則會多一個 AttachDbFileName 屬性。

一般連線字串 : 

data source=WindDatabaseinitial catalog=WindSystemintegrated security=True;

LocalDB 連線字串 : 

data source=(LocalDB)\MSSQLLocalDBattachdbfilename=|DataDirectory|\WindSystem.mdfintegrated security=True;

**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 專案。

  1. 於 App_Data 右鍵【加入】→【新增項目】
    image
     
  2. 選擇【SQL Server資料庫】( 在 資料 類別中 )
    image
     
  3. App_Data中會增加一個 mdf 檔,可右鍵「開啟」,或是以 CTRL+W 再 CTRL + L,開啟伺服器總管
    image
     
  4. 這裡的設定跟SSMS差不多,就不多加贅述。可以開始建立資料表了~

 


 

***結語***

以自己參與過的團隊經驗來說,用到LocalDB的機會不大,甚至可說是完全沒有,幾乎都是開發人員共連測試DB。

但在查找的過程中,有不少分享者的單位都是使用LocalDB,並且遇到一些特殊的情境或狀況 : 像是版本不一致或是需要轉移等。

因目前大致上是以自己開發為主,以「介紹」與「設定」為重心。

所以在上述的團隊分享或版本變更等狀況,比較沒有經驗,此篇就不轉述,畢竟自己沒遇過或是沒有重現那個情境,寫出來也只是拾人牙慧。

待哪天用著用著真的遇到了什麼問題,再來另外寫一篇 LocalDB 深入的疑難排解吧~

有看完的文章還是會放在下方參考資料,也歡迎有需要深入研究LocalDB的人員分享~

 


 

參考資料 : 

SQL Server Express

[ASP.NET MVC] 建立SQL Server LocalDB

[鐵人賽][Denali 新特性探險19]SQL Server Express LocalDB(1)

[鐵人賽][Denali 新特性探險20]SQL Server Express LocalDB(2)

SQL Server Agent 服務無法啟動

SQL SERVER AGENT 無法啟動

SQL Server Express LocalDB

如何連接並存取 SQL Server 2012 Express LocalDB

讀取 .mdf檔而不使用SQL Server

LocalDB 開不起來,需要升級該怎麼處理

Is there a difference between SQL Server Express (2012) and LocalDB?

SqlLocalDB 公用程式

LocalDB的使用詳解

在 Visual Studio 中建立資料庫及新增資料表

SQL Server 2012 Express LocalDB (SqlLocalDB) 深入剖析

arrow
arrow
    創作者介紹
    創作者 律晴音 的頭像
    律晴音

    聆風之境

    律晴音 發表在 痞客邦 留言(0) 人氣()