開發人員方便的好工具–SQL Server 2012 Express(含 LocalDB)

本文將介紹 SQL Server 2012 Express 及 LocalDB 的一些功能特性及其使用上的限制。

SQL Server 2012 的版本分為 Enterprise、Business Intelligence 以及 Standard 三個主要的版本,全部都提供 64 位元和 32 位元兩種選擇。另外,這次 Microsoft 一樣很有佛心的提供免費的 Express 版,而且免費版本功能又比以往更多,對於小型專案或基本開發及測試需求的用途已經相當夠用,但相信仍有許多使用 Express 版的朋友對這個版本的功能或限制有所顧慮,所以筆者把它整理如下:

  • 安裝
    1. 支援 Server Core 安裝。
    2. 支援多個執行個體(最高 50 個)。
  • 高可用性
    1. AlwaysOn 功能僅支援資料庫鏡像的見證伺服器。
    2. 支援 Database Recovery Advisor。
  • 安全性
    1. 支援基本稽核功能。
    2. 支援使用者定義角色(User-Defined Roles)。
    3. 支援自主資料庫(Contained Databases)。
  • 複寫(Replication)
    1. 支援 SQL Server 變更追蹤(SQL Server change tracking)。
    2. 合併式複寫(Merge replication)僅支援訂閱者功能。
    3. 交易式複寫(MSDN 翻譯為異動複寫,Transactional replication)僅支援訂閱者功能。
    4. 快照式複寫(Snapshot replication)僅支援訂閱者功能。
  • 管理工具
    1. 支援 SQL 管理物件(SQL Management Objects,SMO)。
    2. 支援 SQL 組態管理員(SQL Configuration Manager)。
    3. 支援命令提示字元工具(SQL CMD)。
    4. 不支援 SQL Profiler。
    5. 不支援 SQL Server Agent。
  • RDBMS 管理能力
    1. 支援使用者執行個體(User Instances)。
    2. 支援專用管理員連接(Dedicated admin connection,DAC),但必須在追蹤旗標下使用。
    3. 支援 PowerShell 指令碼。
    4. 支援 SysPrep。
    5. 支援資料層應用程式元件作業(Support for Data-tier application component operations)。
    6. 部分支援分散式資料分割檢視(Distributed partitioned views)。
  • 開發工具
    1. 支援整合 Microsoft Visual Studio。
    2. SQL Server Developer Studio。
    3. 支援 T-SQL 和 MDX 的 Intellisense 功能。
  • 可程式性(Programmability)
    1. 支援整合 Common Language Runtime (CLR) 。
    2. 支援 Native XML。
    3. 支援 XML 索引。
    4. 支援 Merge 和 Upsert 功能。
    5. 支援 FileTable。
    6. 支援 Date 和 Time 資料型態。
    7. 支援國際化(Internationalization)。
    8. 只支援 Service Broker (messaging) client。
  • Integration Services
    1. SQL Server 匯入和匯出精靈。
    2. 支援內建的資料來源連接器(Built-in data source connectors)。
  • 報表資料庫版本
    1. 必須安裝 Express with Advanced Services。
    2. 僅支援本機。
  • 空間和位置服務(Spatial and Location Services)
    1. 支援空間索引(Spatial indexes)。
    2. 支援平面與Geodetic資料類型(Planar and Geodetic datatypes)。
    3. 支援進階空間程式庫(Advanced spatial libraries)。
    4. 支援匯入/匯出業界標準空間格式(Import/export of industry-standard spatial data formats)。
  • 其他資料庫服務
    1. 支援SQL Server 移轉小幫手(SQL Server Migration Assistan)。
  • 限制
    1. 關聯式資料庫大小上限為 10 GB。
    2. 使用記憶體上限為 1GB。

 

值得一提的是 SQL Server 2012 Express 提供了一個新的名為 LocalDB 的執行模式,您可以拿它來取代  SQL Server Express 的使用者執行個體(User Instance)功能,有關 LocalDB 具備之特性說明如下:

  • 安裝簡便

僅需以 Administrator 權限執行 LocalDB 的安裝程式(SqlLocalDB.msi)即可,且相較於 SQL Server 2012 其他版本而言,安裝程式相當的迷你,,32位元大小僅有 28.2 MB,64位元大小為 33.7 MB。此外,您也可以在安裝 SQL Server 2012 Express 選擇 Feature 時,勾選 LocalDB 即可(如下圖)來進行安裝。

image
 

  • 管理簡單

不須針對執行個體進行任何設定即可使用 LocalDB,您可以直接透過 Windows 驗證方式連接 LocalDB,也不須管理 LocalDB 的服務要以何種身分啟動。

  • 支援與 SQL Server Express 相似的 T-SQL 功能

LocalDB 的 Developer Tools 為開發人員提供 SQL Server Database Engine,幫助您撰寫存取資料庫的 T-SQL 程式碼。

  • 執行環境

與其他版本的 SQL Server 一樣,LocalDB 執行於 sqlservr.exe 執行檔,但不需要任何資料庫服務。因此當您嘗試連接 LocalDB 時,會自動執行 LocalDB 的服務,由下圖可見,標示處的 SQL Server Windows NT –64 Bit 處理序。

image

  • 支援 AttachDb FileName

LocalDB 允許開發人員指定資料庫檔案的位置(如下圖)。

image
 

  • 支援XML(XQuery、XPath)、 BLOB、ADO.NET Sync Framework、LINQ、分散式交易等功能。
  • 支援利用 SqlLocaDB 公用程式來建立 LocalDB 的執行個體,例如下列的語法:

       1:  SqlLocalDB.exe create "DeptLocalDB"
       2:  SqlLocalDB.exe share "DeptLocalDB" "DeptSharedLocalDB"
       3:  SqlLocalDB.exe start "DeptLocalDB"
       4:  SqlLocalDB.exe info "DeptLocalDB"
       5:  REM The previous statement outputs the Instance pipe name for the next step
       6:  sqlcmd –S np:\\.\pipe\LOCALDB#<use your pipe name>\tsql\query
       7:  CREATE LOGIN NewLogin WITH PASSWORD = 'Passw0rd!!@52'; 
       8:  GO
       9:  CREATE USER NewLogin;
      10:  GO
      11:  EXIT

 

  • LocalDB 不支援合併式複寫的訂閱者功能、FILESTREAM 以及針對 Service Broker 只允許本機佇列。
  • LocalDB 支援具名執行個體(Named Instances)以外,尚支援自動執行個體(Automatic Instances)

其中具名執行個體由負責建立該執行個體的單一應用程式所用有,換言之其他應用程式無法跨具名執行個體來存取,屬於應用程式私有(Private)。而每一台電腦上安裝的每一個 LocalDB 版本個存在一個 LocalDB 的自動執行個體,無發建立執行個體就可以運作,要連接至自動執行個體,連線串必須以 v開頭接著 xx.x 的發行版本號碼為執行個體名稱,例如連接到 SQL Server 2012 的 LocalDB,可以 (localdb)\v11.0 來表示(如下圖):

image

 

  • 支援共用執行個體(Instance Sharing)

為使多個使用者連接到單一 LocalDB 的自動或具名執行個體,LocalDB 支援共用執行個體,讓執行個體的擁有者允許其他使用者來連接,開放共用執行個體的第一個步驟,必須以系統管理員身分為執行個體選擇其他使用者都可以看到的共用名稱(別名),這個別名必須是該電腦上唯一的。有關啟用或取消共用執行個體,可參考 LocalDB API  或 SqlLocalDB 公用程式。

 

【參考資料】