SQL Server 2005 Express Edition 概觀

 

作者:Rajesh George

2005 年 11 月

適用於:
   Microsoft SQL Server 2005 Express Edition
   Microsoft Visual Studio 2005

摘要: SQL Server Express Edition 是以 SQL Server 2005 技術為基礎的免費產品,它包含獨特的 Application XCopy 功能、網路功能以及安全性,與 SQL Server 2005 的其他版本大為不同。本文會討論這些主題,並說明 SQL Server Express 與 Visual Studio 2005 之間的整合,還會拿這個產品與現有像是 MSDE 和 Jet 免費的 Microsoft 資料庫做比較。(此文章包含連至英文網頁的連結,列印共 19 頁)

目錄

簡介
   目標情境
SQL Server 2005 Express 主要功能
   引擎規格
   工具支援
   網路功能支援
   資料存取支援
   安全性
   複寫支援
   SQL Service Broker
   User 執行個體
   安裝程式與部署作業
   語言支援
   產品支援
   軟硬體需求
   64 位元支援
   SQL Server Express 未提供之功能
與 Visual Studio 之整合
與其他免費 Microsoft 資料庫之比較
   與 MSDE 之比較
   與 Jet 之比較
結論

簡介

SQL Server Express 是一個以 SQL Server 2005 技術為基礎的免費資料庫產品,操作起來十分簡單。它經過特殊設計,所提供的資料庫平台使用極為簡單,並能在目標情境裡快速進行部署。從圖形化使用者介面 (GUI) 安裝程式開始使用就十分簡易,此介面簡單明瞭且強而有力,能指引使用者完成安裝步驟。SQL Server Express 隨附的免費 GUI 工具包括 SQL Server Management Studio Express Edition (即將推出 Technical Preview 版)、Surface Area Configuration Tool 以及 SQL Server Configuration Manager,這些工具簡化了基本的資料庫作業。資料庫應用程式的設計與開發由於與 Visual Studio 專案緊密整合,因此更為簡單。除此,我還會介紹如何以傳統式移動 Windows 檔案的方式來部署資料庫應用程式。服務 (Servicing) 與修補 (Patching) 方面也已經簡化並且自動化。

SQL Server Express 和其他版的 SQL Server 2005 採用同一個可靠且效能高的資料庫引擎,它所用的資料存取 API 也一樣,例如 ADO.NET、SQL Native Client 和 T-SQL 等,其實,它和其他 SQL Server 2005 版本唯一的差別只有:

  • 不支援企業功能
  • 限於一個 CPU
  • 緩衝集區有 1 GB 記憶體的上限
  • 資料庫最大上限為 4 GB

SQL Server Express 已把「自動關閉」(Auto-Close) 及利用檔案複製方法來複製資料庫等功能預設為啟用,但它並不提供可用性高和商務智慧等方面的功能。但因為 Express 版的應用程式能與 SQL Server 2005 Workgroup、Standard 和 Enterprise 等版本順利搭配使用,需要時,很容易就能「擴充」。而網路下載能提供免費、快速且方便的部署。

本白皮書會探討 SQL Server Express 專有的元件與功能,像是 Application XCopy (User 執行個體)、網路功能以及安全性,文中也會說明常見的使用情況。此外,我會解說使用 Microsoft Visual Studio 2005 來開發資料應用程式有多簡單。本文的目標讀者群如下:

  • 業餘開發人員
  • 資料庫開發人員、系統管理員和操作員
  • 商務分析師
  • 技術決策者

目標情境

SQL Server Express 是針對兩個特殊用途而開發的:第一,作為一個伺服器產品,尤其是 Web 伺服器或資料庫伺服器,第二,作為一個本機用戶端資料存放區,不需依賴網路就能存取裡面的應用程式資料;而它的主要設計目標是使用方便並且簡明易用。

SQL Server Express 的三大使用場合如下:

  • 業餘開發人員建構 Web 應用程式
  • 獨立軟體廠商 (ISV) 轉散發 SQL Server Express,以其作為低階 (Low-end) 伺服器或用戶端資料存放區
  • 業餘人士建構基本用戶端/伺服器應用程式

SQL Server Express 提供使用方便且可靠的資料庫平台,功能豐富,能應付上述種種情況。它在設定與部署方面的簡便性和可靠度特別經過考量,能讓 ISV 使用起來很簡單,轉散發時相當容易,正是因為這兩個特性。

SQL Server 2005 Express 主要功能

SQL Server Express 所用的資料庫引擎與其他版的 SQL Server 2005 一樣,而且所有的程式撰寫功能也相同,如需進一步資訊,請參閱《SQL Server 2005 線上叢書》。下面將說明 SQL Server Express 的專有功能,也會詳述對客戶影響較大的功能。

引擎規格

SQL 引擎支援 1 顆 CPU、1 GB RAM 和 4 GB 大的資料庫,這個機制的定義明確,因此很容易就能區分它與其他版本的 SQL Server 2005,若沒有特別註明,工作負載節流方面則無限制,而引擎運作也就和其他版本一樣。SQL Server Express 在使用者數量並無明確的上限,可是能達成 SQL Server Express 資料庫可接受回應時間的使用者數量會因為它在 CPU 和記憶體方面的限制而受限。

SQL Server Express 可安裝、執行於多處理器電腦上,但一次只會使用一個 CPU。引擎會在內部將使用者排程器執行緒限制為 1,如此一來,一次就只可使用一顆 CPU。正因為這個單一 CPU 的限制,所以此版本不支援平行查詢。

緩衝集區的可用記憶體上限是 1 GB RAM。緩衝集區是用來儲存資料頁面和其他資訊的,但是追蹤連接或鎖定時所需的記憶體並不算在緩衝集區記憶體裡,所以伺服器所用的記憶體總量可能超出 1 GB,不過緩衝集區所用的部分一定是在 1 GB 的範圍之內。此版不支援 Address Windowing Extensions (AWE) 和 3 GB 資料存取,也不會使用到這些功能。

資料庫大小的上限為 4 GB,但此限制只適用於資料檔案,記錄檔並不適用。然而,能附加到伺服器的資料庫數目並無任何限制。SQL Server Express 在啟動時與其他版有些微不同,使用者資料庫並不會自動啟動,分散式交易協調器 (Distributed Transaction Coordinator,DTC) 也不會自動初始化。但從使用經驗來看,這除了加快應用程式啟動作業之外,並無其他影響。想使用 SQL Server Express 的程式設計師在設計應用程式時,別忘了有這些變更之處。

SQL Server 2005 Express 能多重安裝在一台電腦上,也能與 SQL Server 2000、SQL Server 2005 或 Microsoft Desktop Engine (MSDE) 共存。大體上說來,還是把 SQL Server 2000 執行個體升級到 Service Pack 4 (SP4) 比較好。一台電腦上最多能有 16 個 SQL Server Express 執行個體,為了能識別這些執行個體,請務必賦予它們唯一的名稱。

依預設,SQL Server Express 會以 SQLEXPRESS 具名執行個體安裝,多個應用程式和應用程式廠商都可能共用此執行個體,所以除非您的應用程式需要特殊組態,否則在此建議您採用此執行個體。

針對 SQL Server Express 進行程式設計時可用的 API 與針對 SQL Server 2005 進行設計時所用的一樣,所以使用者若想改用 SQL Server 2005 的其他版本,能享有一貫的使用經驗。SQL Server Express 也支援 SQL Server 2005 的新功能,像是 Common Language Runtime (CLR) 整合、新資料型別 (例如 VARCHAR(MAX) 和 XML)、使用者定義型別、使用者自訂彙總等。除此,SQL Server Express 資料庫能附加至 SQL Server 2005,而針對 SQL Server Express 執行個體所撰寫設計的應用程式也能用於 SQL Server 2005 執行個體。本版還提供複寫與 SQL Service Broker 功能,文章稍後會詳細介紹。

工具支援

SQL Server Express 已經過特殊設計,用起來很簡單,甚至對資料庫的新手而言,它的圖形化使用者介面 (GUI) 工具都有助輕鬆使用 SQL Server Express 的基本資料庫功能。SQL Server Management Studio Express Edition 這個新 GUI 工具能從網站上單獨免費下載,使用 SSMS-EE 即可輕鬆管理資料庫、查詢分析,而且使用者還能自由將它轉散發給他人。

SSMS-EE 能支援與 SQL Server Express 和其他 SQL Server 2005 版本、SQL Server 2000 和 MSDE 2000 的連接,並提供簡單的連接對話方塊,指引使用者選取欲使用的執行個體與驗證方法。本機連接與遠端連接皆可行。物件總管會以階層方式列舉、顯示所用的通用物件 (如執行個體、資料表、預存程序等),有助使用者視覺化對資料庫的存取。

所有資料庫管理功能都可透過叫用物件總管中的滑鼠右鍵內容功能表來使用。SSMS-EE 內建立、修改資料庫、資料表、檢視、登入和使用者等功能,和其他版本中所附之完整版 SQL Server Management Studio 一模一樣,因此,若您升級到 SSMS 完整版,即可立刻使用您從 SSMS-EE 裡學到的技巧。

許多資料庫使用者偏好使用 T-SQL 來管理他們的伺服器,因為這個方法能提供比使用圖形化使用者介面更精密的控制。SSMS-EE 中的查詢編輯器可讓使用者開發及執行 T-SQL 陳述式與指令碼。查詢編輯器的功能豐富,具有關鍵字色彩編碼以及以資料方格傳回結果的結果窗格。結果窗格也會顯示錯誤訊息 (若有的話)。SSMS-EE 支援 SSMS 全部的查詢編輯器功能,其中包括圖形查詢計劃。

按此豚可放大影像

[圖 1] 查詢編輯器 (按影像看放大圖)

SSMS-EE 能透過個別的網路下載來進行散佈,使用者只需按一下可執行檔,就能啟動安裝程式。若已安裝 SSMS,則無法安裝 SSMS-EE,因為無此必要。同樣的,使用者能重新啟動安裝程式,或是使用 [控制台] 內的 [新增或移除程式內容] 功能表,來解除安裝 SSMS-EE。

SQL Server Express 所隨附的工具包括 SQL Computer Manager、SQL Command 和 BCP。SQL Computer Manager 是用來啟動、停止 SQL Server 服務,或是啟用 (停用) 網路通訊協定;SQL Command 則是以命令列來進行連接和查詢;BCP 的用途是大量複製資料。

SQL Computer Manager 能讓系統管理員設定基本服務與網路通訊協定組態,這僅是 Server Network Utility、Client Network Utility 和 Service Manager 等舊有工具的 SQL Server 2005 版本,目的不在改善 SQL Server 的效能特色和作業。

Computer Manager 裡有一個 Microsoft SQL Servers 節點,裡面是所有的服務、伺服器網路通訊協定和用戶端網路通訊協定等等。服務節點會列出所有可用的 Express 服務,並提供像是伺服器執行個體名稱、服務狀態以及啟動類型等詳細資訊。您可以選取某個服務,啟動、停用、暫停或重新啟動服務作業。伺服器網路通訊協定節點會列舉電腦上每個執行個體的通訊協定清單,以滑鼠右鍵按下通訊協定 (例如,TCP) 即可啟動 (或停用) 該通訊協定或是變更其屬性;用戶端網路通訊協定節點的選項也差不多。值得注意的一點是,伺服器網路通訊協定節點會直接處理 SQL Server 執行個體上的通訊協定設定,可是用戶端網路通訊協定節點則不然,它處理的是 MDAC 或 SQL Native Client 提供者此類用戶端的通訊協定設定。用戶端網路通訊協定節點還能用來建立別名,以作為 SQL Server 的別名,且能包含伺服器名稱、所用之通訊協定、連接字串和加密等資訊。

SQL Command 是現有 osql 工具的 OLE DB 版本,它不僅盡可能地保有了與 osql 的功能相容性,還能支援 SQL Server 2005 的新資料型別。除了作業失敗時可能顯示的錯誤訊息之外,所有命令列選項會以標準輸出方式輸出資訊。SqlCmd -? 這種命令能顯示 sqlcmd 語法摘要。

SQL Server Express 的 SQL Computer Manager 和 SQL Command 與 SQL Server 2005 其他版的一樣,並無任何差異。

網路功能支援

SQL Server Express 預設只能在本機電腦上存取共用記憶體連線類型,不過使用者可以手動開啟其他受支援通訊協定,例如 TCP/IP 和具名管道;但 SQL Server Express 並不支援 VIA 和 HTTP 通訊協定。由於預設只支援共用記憶體,除非啟動網路功能,否則無法從遠端電腦連線到 SQL Server Express。下面提供幾個開啟網路功能的方法:

  • 利用 Surface Area Configuration 工具來啟用網路功能、啟動 SQLBROWSER 服務。
  • 利用 SQL Server Configuration Manager 來啟用相關的通訊協定,然後啟動 SQL Browser,[圖 2] 就是以此工具來啟用網路通訊協定。
  • 若事前就知道需要網路功能支援,可在安裝命令列裡使用 DISABLENETWORKPROTOCOLS=0
  • 使用以 SMO 為基礎的指令碼來啟用通訊協定。

SQL Browser 是 SQL Server 2005 中新的服務,它可用來識別具名執行個體會在哪個通訊埠上接聽,由於共用記憶體不使用它,SQL Server Express 把此服務預設為關閉。換言之,使用者必須手動啟用此服務,方可使用網路存取。

注意   SQL Browser 是在 UDP 通訊埠 1434 上接聽的,不過 SQL Server 2000 SP3 之前的版本採用通訊埠 UDP 1434,又因為它們可能會佔用該通訊埠,所以有可能導致 SQL Browser 名稱解析失敗。解決方法是將電腦上所有的 SQL Server 2000/MSDE 執行個體升級到 SP3 或更高版本。

按此豚可放大影像

[圖 2] 使用 SQL Sever Configuration Manager 來啟用通訊協定 (按影像看放大圖)

資料存取支援

SQL Server 2005 Express 和 SQL Server 2005 其他版本一樣也支援原生提供者和 Managed 提供者,因此,為 SQL Server Express 撰寫的應用程式也能在其他版本的 SQL Server 上運作自如,而這是一大優點。

SQL Server 2005 Express 支援 ADO.NET 的 Managed 存取。在開發新應用程式方面,既然多數 Application XCopy 功能必須與 SqlClient 一起提供使用,我們建議採用 SqlClient 資料提供者。ADO.NET 2.0 資料提供者 (Visual Studio 2005 予以提供) 支援新的 SQL Server 資料型別,像是 varchar(MAX)、XML 和使用者定義的型別。

從 SQL Server 2005 版開始,伺服器內的邏輯工作階段 (Logical Session) 已卸離實體連線,用戶端和伺服器傳輸層都已更新,能提供多路傳輸 (Multiplex),而多重邏輯工作階段可以採用單一實體連線。如此,用戶端對同一個連線可採用多重作用結果集 (MARS)。要注意的是,整體而言,MARS 的目的並不在移除多重連線,SQL Server 2005 將 MARS 預設為關閉,讓您能交錯 SQL 操作。舉例而言,您可在某結果集上進行作業,並於處理期間也對資料庫執行陳述式,而不需開啟任何新的連線。在很多類似這種狀況的場合裡,MARS 都能有效取代伺服端資料指標 (Server Cursor) ,尤其是同一交易中要處理資料擷取與更新時,十分好用。

SQL Server 2005 用戶端也支援同步輸入與輸出 (I/O),如此,應用程式執行緒不會再被資料傳輸作業封鎖,而用戶端應用程式的回應也十分良好。在這種模式之下,I/O 呼叫會立即傳回,完成後則同步通知應用程式,如此一來,應用程式就能繼續其他作業,稍後再檢查 I/O 完成事件。

SQL Server 2005 版本時間範圍內的資料存取元件分為兩部分:一個是 MDAC 堆疊 (它是作業系統的一部份);另一個是 SQL Native Client 提供者 (提供 SQL Server 專有資料存取程式庫原生資料存取)。SQL Native Client 的目標是 SQL OLEDB、SQL ODBC 和 ADO 等的客戶,他們正在撰寫新的應用程式或提昇現有應用程式來利用 SQL Server 2005 新功能。

SQL Native Client 除了 SQL OLE DB、SQL ODBC、SQL BCP 和 SQL Networking Interface 之外,還包含 SQL Server 2005。SQL Server 2005 的精采功能包括 MARS、使用者定義型別、XML 資料型別等等,但僅透過 SQL Native Client 提供給 C 和 C++ 程式設計人員。SQL Native Client 是由新元件 (新的類別 ID) 所組成,這些元件和 MDAC 的現有元件是相互獨立的,而且截然不同。舉例而言,它所用的 OLE DB ProgId 是 SQLNCLI,ODBC 驅動程式名稱為 SQL Native Client,且標頭檔案是 SQLNCLI.h。

SQL Native Client 是以單一 DLL 檔案 (SQLNCLI.dll) 呈現的,由於不是作業系統元件,因此服務沒以前複雜,應用程式比較容易重新散佈和部署。SQL Native Client 的更新版會隨著新版的 SQL Server 推出,如此,應用程式能明確變更組態資訊清單,使用此提供者的新版本。

MDAC 提供者與 SQL Native Client 提供者之間的互動頗耐人尋味,拿 MDAC 2.5、2.7 或 2.8 來說,它們無法利用共用記憶體連線到 SQL Server 2005,這會影響到所有使用 SQL OLE DB 或 SQL ODBC 的原生應用程式,不僅是現有的原生應用程式,就連 Managed OLE DB 或 ODBC 應用程式也不例外,因為它們內部都使用 MDAC。對 SQL Server 來說,通常如果共用記憶體連線失敗,則會採用網路通訊協定,像是 TCP/IP,可是 SQL Server Express 則不然,由於網路功能預設成關閉,這些應用程式的連線會失敗。所以,要解決此問題,得改變應用程式,讓它使用 SQL Native Client 提供者,或者,啟用網路傳輸控制通訊協定 (TCP),然後啟動 SQL Browser 也可以。

安全性

SQL Server Express 的其中一個目標是要為各種元件提供安全的預設值。以網路通訊協定 TCP/IP 和具名管道來說,它們就沒被啟用;SQL Browser 服務除非是使用者明確在安裝命令列中要求,否則也不會啟動;若使用 Windows 驗證,則預設情況下,SA 帳戶 (又稱系統管理員帳戶) 會被停用。電腦上的一般使用者幾乎沒什麼 SQL Server Express 執行個體的權限,伺服器上本機系統管理員必須明確授權一般使用者相關的權限,他們才能使用 SQL 的功能。

SA 登入是 SQL Server 中的特殊登入,而且是系統管理員 (sysadmin) 角色的一員,多半是在使用 SQL 驗證模式的組態中會使用得到,而在 Windows 驗證模式下並不會採用。由於安全性因素,SQL 需要強式的 SA 密碼,在 GUI 安裝和 SQL 驗證模式無訊息安裝時,使用者都必須提供強式的 SA 密碼。可是,若是進行 Windows 驗證無訊息安裝,則不需要 SA 密碼,因為在使用 Windows 驗證模式時,如果使用者未指明密碼,SQL Server Express 無訊息安裝就會隨機提供一個強式的 SA 密碼。此外,這種情況下安裝程式會停用 SA 帳戶,所以您若想使用此帳戶,之後必須使用 T-SQL 啟用 SA。如此一來,當使用 Windows 驗證時 ISV 就不必提供密碼,而進行大規模部署時就不受到阻礙。未來版本可能也會將這個功能運用到 GUI Windows 為主的安裝上。

複寫支援

「複寫」能讓使用者在多個位置利用「發行者-訂閱者模式」,根據使用者定義的複本同步化間隔來維護資料複本。SQL Server Express 支援合併、快照、交易等發行集的訂閱,但不允許發行集本身。SQL Server Express 裡的複寫訂閱功能齊全,但由於 SQL Server Express 不隨附 SQL 代理程式,所以要排定訂閱挑戰性比較大。下面提供一些方法供您同步化 SQL Server Express 訂閱:

  • 撰寫程式利用 Replication Management Object (RMO) 進行同步化。
  • 使用 Windows Sync Manager 來處理已排程的同步化

SQL Service Broker

SQL Service Broker (SSB) 是 SQL Server 2005 裡新式、可靠的訊息基礎架構 (Messaging Infrastructure)。服務程式能選擇是否採用對等式訊息交換合約所呼叫的對話來進行通訊。透過 T-SQL 語言即可使用這個功能。

SQL Server Express 若要使用 Service Broker,必須與 SQL Server 2005 其他版本一起搭用,如果 SQL Server Express 接到其他 Express 執行個體送出的 Broker 訊息,而另一個 SQL Server 2005 版本尚未處理此訊息,則會將訊息卸除。這種情況下,訊息可以是源自某 Express 執行個體,最後也可傳送到另一個執行個體,可是必須透過一個非 Express 的執行個體來進行路由。要追蹤此這種情況,可檢查 Profiler 裡的 Message Drop 追蹤事件,亦可使用追蹤預存程序。卸除訊息的相關訊息內包含冗詞:「This message has been dropped due to licensing restrictions. (由於授權限制,此訊息已被卸除。)」。

假設一個範圍較大的情況,某應用程式在收銀機上部署 100 個 SQL Server Express 執行個體,它們都連接到後端的非 SQL Server Express 伺服器,此時,只要後端伺服器參與所有對話,就不會有問題,SQL Server Express 執行個體必須透過後端才能與其他 Express 執行個體順利進行對話。

User 執行個體

User 執行個體是 SQL Server Express 中的新功能,可以把資料庫當成檔案看待,將本機資料庫隨著應用程式移動、複製,或以電子郵件寄出,而在新的位置上,無須設定其他組態就能開始使用。SQL Server Express 中之所以能支援 Application User 執行個體,這歸功於三大特點:連接字串內的 AttachDBFilename 選項,無須指定邏輯資料庫名稱,以及 User 執行個體的選項。

User 執行個體支援有一些假設條件,假設電腦上已裝有以 SQLEXPRESS 為執行個體名稱的 SQL Server Express,而且這是個僅 Managed 堆疊式 (Managed-stack-only) 解決方案,您必須用 .NET SQL Server Data Provider 來開發可部署 XCopy 的應用程式。換言之,如果應用程式能與 User 執行個體一起搭用,則不能使用 SQL Native Client 或 MDAC 進行開發。

應用程式開發人員通常在複製應用程式時,只會複製使用者資料庫和記錄檔。可是,SQL Server 裡有一個特殊的系統資料庫,叫做 Master,裡面存有一些組態項目,不少功能需要用到 Master 裡的項目,SQL 驗證 (在此建議盡可能使用 Windows 驗證) 就是一個例子。若您的應用程式會用到 Master 內的項目,則開發人員必須確定目標系統有那些組態項目的複本。一個保險的方法是,在目標電腦上安裝應用程式時,也把 SMO、DMO 或 T-SQL 組態指令碼以及執行指令碼的應用程式包含在內。多半具有 Windows 驗證功能的應用程式都能從主資料庫複製訊息,不會有什麼問題。

AttachDBFileName

您可以為 AttachDBFileName 連接字串項目指定一個絕對或相對檔案路徑。一旦開啟連接,就會附加所指定的資料庫檔案,而此資料庫也會成為該連接的預設資料庫。如果 AttachDBFileName 被叫用時資料庫就已經附加好了,則不會有任何附加動作。這個關鍵字支援一個叫做 |DataDirectory| 的特殊字串,它在執行階段時會指向儲存資料庫檔案的應用程式的資料目錄。檔案路徑的開端應該使用這個特殊字串,且此字串只能針對本機檔案系統使用。\..\ 語法會受到檢查,以確保檔案路徑的層級不高於替代字串所指向的目錄。

使用 AttachDBFileName 時,記錄檔的用法有一定的限制。記錄檔名稱格式必須為 <資料庫檔案名稱>_log.ldf,使用 AttachDBFileName 時不能擅自為記錄檔命名。舉例而言,如果資料庫檔案名稱是 myDb.mdf,且它位於 c:\myApp,則記錄檔名稱就應該是 myDb_log.ldf。如果 SQL 在資料庫檔案所在的目錄裡找不到這個檔案,它會在附加作業時建立一個新的記錄檔,也就是說,使用 AttachDBFileName 並不支援使用者定義的記錄檔名稱。

SQL Server 支援一個資料庫使用多重資料和記錄檔,散發這些檔案時能先將它們分成多組檔案。但這不受到 AttachDBFileName 語法的支援,網路共用、HTTP 路徑以及 UNC 遠端資料庫也不受支援。

邏輯資料庫名稱

若連接字串內未指明邏輯資料庫名稱,則會為附加的資料庫自動產生一個名稱,而此名稱是以 .mdf 檔案的相對檔案路徑為基礎產生出來的。舉例而言,若檔案是位於 c:\myDocuments\Myapp\myDB.mdf,則邏輯資料庫名稱會以此完整路徑為基礎命名,但如果路徑檔案超過 128 個字元,此功能就會使用現有路徑及一個雜湊來產生邏輯資料庫的名稱。這是 SQL Server Express 的新增功能,在 SQL Server 2000 中如果沒指明資料庫名稱,就會出現錯誤訊息。支援的語法包括 database=;initial catalog=;,使用者亦可在連接字串內將它們整個刪除。

在同一台電腦上移動或複製資料庫時,這個功能非常實用,畢竟以檔案路徑為基礎的邏輯名稱是唯一的。如果少了這項功能,而兩個不同的目錄使用同一個邏輯名稱來開啟資料庫,則 SQL Server 內就會出現命名衝突。不同電腦上也支援 Application XCopy。

請注意,要用「database」或「Initial Catalog」關鍵字明確指定邏輯伺服器還是可以的,在使用複寫功能、SQL Service Broker、T-SQL 查詢內的多部分名稱 (Multiple-part Name) 或是跨資料庫時,使用者可能需要明確指定邏輯資料庫名稱。

自動關閉功能

自動關閉功能在 SQL 2000 裡就已經存在,而 SQL Server Express 把這個功能預設成啟用。當資料庫沒有現用連線時,此功能會解除檔案鎖定,如此一來,使用資料庫的應用程式關閉後,資料庫就會就緒以供移動或複製。

然後,從使用者的角度來看,自動關閉功能未必總是好用,尤其是在未預期的用戶端終止或使用連接共用的時候。發生未預期用戶端終止時,連線最後會因逾時而被清除。至於連接共用,當它被啟用且使用者叫用連線關閉時,連線事實上並不會關閉,而是被傳回到集區。要想關閉所有連線,通常必須關閉應用程式網域或所有開啟中的連線。ADO.NET 也含有像是 ClearPool 的函式,以供以手動方式進行重設。

User 執行個體

User 執行個體允許非系統管理員的使用者附加、管理 SQL Server Express 資料庫。他們建立一個 SQL Server 私用複本,執行開啟資料庫連線的使用者的安全性內容。開啟連線的使用者會成為 User 執行個體的服務帳戶,因此他具有完整的資料庫系統管理員權限。這些權限能讓不是管理員的 Windows 使用者擁有資料庫管理員權限,允許他們利用 AttachDBFilename 附加資料庫,也准許他們建立所需的資料庫物件,因此這個模式是資料庫應用程式開發的理想模式。

安裝程式與部署作業

SQL Server Express 安裝程式簡化了 SQL Server 2005 處理序,它十分堅韌可靠,且支援 GUI 和無訊息安裝模式;只有 Windows Installer 為基礎 (.msi) 的技術受到支援。

SQL Server Express 網路下載程式已封裝成單一個可執行檔,使用 Microsoft 安裝技術,稱為 SFXCab。您可從 Microsoft 下載中心下載 SQL Server Express。按兩下 .exe 即會自動開始安裝流程。

安裝 SQL Server Express 的先決條件是需要裝有 .NET Framework 的 Visual Studio 2005,電腦中若沒有正確版本,安裝程式就會出現錯誤。安裝程式具有一個系統設定檢查 (System Configuration Check,SCC) 元件,它在安裝真正開始之前會自動執行,檢查系統是否符合最低安裝需求,其中包括最低硬體需求、最低作業需求、暫止重新開機需求等等。可能有許多使用者都會碰到暫止重新開機需求失敗的問題,也就是使用者要先重新開機,之後 SQL Server Express 安裝作業才會繼續進行。SCC 所帶來最大的好處就是能及早識別由不正確的電腦組態所引發出來的常見安裝錯誤,並提供使用者適當的警告和錯誤訊息。舉例而言,若電腦的記憶體大小只有 256 MB,SCC 會發出警告,但仍會繼續安裝作業。[圖 3] 為 SCC 的範例擷取畫面。

ms345154.sseoverview03(zh-tw,SQL.90).gif

[圖 3] 系統設定檢查

安裝程式開始執行後,您會發現螢幕已簡化許多,開發人員使用起來十分容易。舉例而言,用來處理定序和服務帳戶的複雜的對話方塊已在 [Hide Advanced Configuration (隱藏進階組態)] 對話方塊內預設成隱藏。使用者如果清除此選項,則會顯示進階的組態對話方塊。安裝記錄的功能已預設成開啟,使用者只要使用 \Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG 目錄裡所建立的記錄檔就可輕鬆瞭解安裝何以失敗。

在預設的情況下,SQL Server Express 會安裝成 SQLEXPRESS 執行個體,在此建議應用程式使用這個共用的 SQLEXPRESS 執行個體。除此,SQL 裡的某些功能已預設為關閉,若想要安裝這些元件,您必須明確予以選擇。下面有一個功能元件樹狀表,告訴您哪裡可選取要手動安裝的項目。若使用安裝命令列 ADDLOCAL=All,則會選取全部的安裝元件。[表 1] 是主要元件樹狀 GUI 項目和對應的命令列選項。

[表 1] SQL Server Express 功能元件樹狀表

主要元件 GUI 主要元件命令列參數 (在 ADDLOCAL 後面鍵入欲安裝功能清單,功能間以逗號區隔且不得留空)。
SQL Server Database Services (SQL Server 資料庫服務) SQL_Engine
Data Files (資料檔案) SQLEngine_Data_Files
Replication (複寫) SQL_Replication
Client Components (用戶端元件) Client_Components
SQL Command Line Tools (SQL 命令列工具) Server_tools
Connectivity Components (連接元件) Connectivity
Software Development Kit (軟體開發套件) SDK

在此建議您,自行安裝產品時最好使用 GUI 安裝模式,SQL Server Express 通常是以網路下載程式 (Microsoft 網站) 或應用程式 CD 的形式提供。

安裝 SQL Server Express 時,最好採用無訊息安裝模式,這個模式可驗證電腦上是否有執行個體名稱 SQLEXPRESS,如果沒有,則需以無訊息方式安裝它。要識別電腦上是否有 SQL Server Express 執行個體,方法有二:

  • SQL Windows Management Instrumentation (WMI) 提供者裡面的 ServerInstance 含有 SQL 版本資訊。
  • Select SERVERPROPERTY("ENGINEEDITION") T-SQL 命令會為 SQL Server Express 傳回一個值:4

要想包含 SQL Server Express Microsoft Windows Installer (MSI) 或網路下載執行檔 (對 ISV 而言尤其受用),可使用安裝啟動程式 (Setup Bootstrap) 或 Visual Studio 的 Click Once,但如果已經有了 SQLEXPRESS 執行個體,則不應該繼續 SQL Server Express 的安裝作業。有一點一定要牢記在心,就是 Microsoft 不支援 .msi 鏈結,因此不應該使用它。除此,SQL Server Express 並不支援合併模組。如果已裝有 MSDE,但並未於 [主控台] 的 [新增或移除程式內容] 功能表內列出,則必須執行 SQL Server Express 的全新安裝。

下面提供一些常用的命令列參數:

  • SAPWD 是用來提供 SA 帳戶密碼的,若也使用 SECURITYMODE=SQL 時,通常就會用到這個參數。SECURITYMODE=SQL 會啟用混合模式驗證,而提供強式 SA 密碼十分重要。Windows 驗證則不需此參數。
  • 使用 ADDLOCAL=ALL 會選取全部的 SQL Server Express 安裝元件。
  • DISABLENETWORKPROTOCOLS 是用來啟用/停用網路通訊協定,它的預設值是 1,也就是說,網路功能被預設為停用。要啟用執行個體內的網路功能,需要使用 DISABLENETWORKPROTOCOLS=0
  • /qn 是用來進行無訊息安裝。
  • INSTANCENAME 參數是用來指定具名執行個體的名稱,在此建議您將預設值設成 SQLEXPRESS

語言支援

MSDE 所支援的 12 個語言 SQL Server Express 資料庫引擎也都支援,這些目標語言包括英文、葡萄牙文 (巴西)、荷蘭文、瑞典文、簡體中文、繁體中文、法文、德文、義大利文、日文、韓文和西班牙文。

產品支援

SQL Server Express 產品支援是以新聞群組、網路文件與網路資源 (例如 SQL Server 線上叢書以及白皮書) 等形式提供。

軟硬體需求

  • 硬體需求
    • 處理器最低需求:600 mHz
    • 建議使用處理器:1 GHz
    • RAM 最低需求:256MB (會出現安裝警告)
    • 建議使用 RAM:512MB
    • 硬碟空間最低需求:170 MB (先決條件:Microsoft .NET Framework)
    • 視訊最低需求:800 x 600 解析度,256 色彩
    • 建議使用視訊:1024 x 768 解析度,高彩 - 16 位元
  • 軟體需求
    • Microsoft Internet Explorer 6.0 SP1 或更新版本
    • Microsoft .NET Framework 2.0
  • 作業系統
    • Microsoft Windows 2000 SP4 Professional
    • Microsoft Windows 2000 SP4 Server
    • Microsoft Windows 2000 SP4 Advanced
    • Microsoft Windows 2000 SP4 Data Center
    • Microsoft Windows XP SP1 Professional 或更新版本
    • Microsoft Windows 2003 或更新版本
    • Microsoft Windows 2003 Enterprise 或更新版本
    • Microsoft Windows 2003 Data Center 或更新版本
    • Microsoft Windows Small Business Server 2003 Standard 或更新版本
    • Microsoft Windows Small Business Server 2003 Premium 或更新版本

64 位元支援

SQL Server Express 在 x64 平台上支援 Windows on Windows (WOW)。WOW 其實就是在 64 位元電腦上執行 32 位元的 Express。IA64 電腦上無法安裝 SQL Server Express。

SQL Server Express 未提供之功能

某些 SQL 其他版本內所提供的功能,SQL Server Express 並未提供,其中包括:

  • 資料對映、叢集等可用性功能
  • 全文搜尋
  • SQL 代理程式
  • Reporting Services
  • 商務智慧平台,例如 Notification 和 Analysis Services。
  • SQL Management Studio,這是取代 SQL 2000 Enterprise Manager 的新 GUI 工具

請注意,2006 年的時候 SQL Server Express 將新增全文搜尋與 Reporting Services。

與 Visual Studio 之整合

SQL Server Express 是與任一版本的 Visual Studio 一起安裝的,Visual Studio 以 SQLEXPRESS 執行個體安裝 SQL Server Express。在 SQL Server Express 裡,應用程式會依賴 SQLEXPRESS 這個執行個體名稱。之所以整合 Visual Studio 和 SQL Server Express,是要方便 SQL Server Express 存取資料庫,就如使用 Jet 一樣。不僅用戶端應用程式是如此,對使用 ASP.NET Web 伺服器的情況也有好處。

舉例而言,Visual Studio 專案內引進了一個資料庫物件 (這是個範本 SQL Server 資料庫),當使用者在 Visual Studio 專案裡選擇 [新增物件 (Add New Object)] 選項時,這個物件就會出現。一旦將資料庫加到專案中,資料庫連線管理就會自動啟用,使用者只需要按一下資料庫,即可看到裡面所有的物件,像是資料表、預存程序等。我們還提供拖放功能,方便將相關的資料表直接拖到表單裡。若使用的是 Visual Web Developer,則會自動建立 GridViewSqlDataSource,使用者不必鍵入程式碼。您也可自動繫結控制項,例如,以拖放的方法將某個文字方塊與一個資料庫值繫結。所有的連接字串都集中儲存在一個 Web.config 檔案裡,使用者若要進行修改,只要到一個位置就可以了。

由於 Visual Studio 使用 SQL Server Express 裡的 User 執行個體,因此 SQL Server 資料庫檔案好比 Visual Studio 專案中的 Windows 檔案。舉例而言,您在資料目錄裡可以重新命名、刪除、複製或移動資料庫 (.mdf) 檔案,就和使用 Jet 檔案一樣。因為 Visual Studio 保持這些檔案之間的關聯,此相關記錄檔 (.ldf) 的作業和 .mdf 是一樣的。Visual Studio 會管理這些作業,而就算 ASP.NET 頁面或執行緒正對資料庫執行中,這些作業也不會失敗。這表示,一般的 Visual Studio 應用程式開發人員在進行設計和開發時無須擔心記錄檔案一事,可是在部署階段,就必須將記錄檔和資料庫檔案一起傳輸。

與其他免費 Microsoft 資料庫之比較

與 MSDE 之比較

SQL Server Express 取代了 SQL Server 2005 裡的 Microsoft SQL Server Desktop Engine (MSDE),它具有許多容易使用的功能,可供業餘開發人員使用。MSDE 是以 SQL 2000 技術為基礎,與 Windows 9x 平台搭用時效果較佳;SQL Server Express 則以 SQL Server 2005 技術為基礎。SQL Server Express 裡面像是 Application XCopy、強韌的安裝程式 UI、CLR 支援、GUI 工具以及與 Visual Studio 之整合等功能,MSDE 並未提供,但是有些功能則是 MSDE 有、而 SQL Server Express 卻不具備的,其中包括 DTS、複寫發行以及 SQL 代理程式等等。

對 MSDE 而言,部署時使用合併模組會導致服務方面的問題,所以 SQL Server Express 裡並不提供此功能。MSDE 的工作量控管功能有時不易瞭解,用起來也不方便,SQL Server Express 裡捨棄了工作負載節流功能,而且改用 CPU、RAM 和資料庫大小限制而非引擎,來與其他版本做區分。下表為這些產品的比較資訊。

[表 2] MSDE 與 SQL Server Express 之比較

SQL Server Express 2005 MSDE 2000
支援 User 執行個體 無此功能
個別下載 DTS 執行階段時呈現 DTS
沒有 MDAC,因此部署容易 安裝作業包括 MDAC
僅採用 MSI,服務記錄良好 採用 MSI 與 MSM,MSM 服務不易
合併、快照、交易等發行集都有訂閱者複寫 (Subscriber Replication) 功能 合併/快照發行集獨立於訂閱者複寫功能之外
強韌的安裝程式 UI 基本的安裝程式 UI
沒有代理程式 具有代理程式
支援 Windows 2000 SP4、Windows XP SP1 和 Windows 2003 支援 Windows 98、Windows Me、Windows 2000、Windows XP、Windows NT4 和 Windows 2003
支援 CLR 不支援 CLR
提供 GUI 工具 不提供 GUI 工具
資料庫最大限制:4 GB 資料庫最大限制:2 GB
1 顆 CPU,1 GB RAM 2 顆 CPU,2 GB RAM
沒有工作量控管功能 工作量控管功能限制最多能有五個並行執行的工作量
與 Visual Studio 緊密結合 與 Visual Studio 有基本的整合

與 Jet 之比較

SQL Server Express 是以最新的 SQL Server 2005 技術為基礎,而 Jet 有好一段時間都只發行 SP 進行維護工作而已。所有最新、最卓越的功能,像是 CLR 整合與 XML 支援,都只在 SQL Server Express 裡面提供而已,而且 SQL Server Express 的可靠性與擴充性也比 Jet 好。針對 SQL Server Express 撰寫的應用程式很容易就能遷移到 SQL Server Workgroup、Standard 和 Enterprise 等等的版本,但是要想擴充針對 Jet 設計的應用程式則比較困難。SQL Server Express 還為其資料庫物件提供精密的安全性控制。隨著與 Visual Studio 2005 的整合及 User 執行個體功能的開發,我們把 Jet 容易使用的優點引進到 SQL Server。

結論

SQL Server Express 是特別為業餘開發人員和 ISV 設計的產品,這項 Microsoft 發行產品的意義非凡。本產品是免費提供的,不僅使用簡單,功能強大,並且有良好的升級規劃,若要改用 SQL Server 其他版本也十分容易。產品裡面具有此版 SQL Server 專屬的功能 (例如,User 執行個體),而且安裝和部署都很安全。與現有的免費 Microsoft 資料庫 Jet 和 MSDE 比較起來,優點更多。SQL Server Express 與 Visual Studio 2005 的整合也使得資料庫的設計與開發更為簡單。