SQL Server 2005 Express Edition 概述
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
簡(jiǎn)介SQL Server Express 是基于 SQL Server 2005 技術(shù)的一款免費(fèi)易用的數(shù)據(jù)庫(kù)產(chǎn)品,旨在提供一個(gè)非常便于使用的數(shù)據(jù)庫(kù)平臺(tái),可以針對(duì)其目標(biāo)情況進(jìn)行快速部署。之所以便于使用,首先是因?yàn)樗哂幸粋€(gè)簡(jiǎn)單可靠的圖形用戶(hù)界面 (GUI) 安裝程序,可以引導(dǎo)用戶(hù)完成安裝過(guò)程。SQL Server Express 附帶的免費(fèi) GUI 工具包括:SQL Server Management Studio Express Edition(啟動(dòng)時(shí)可以使用的技術(shù)預(yù)覽版本)、Surface Area Configuration Tool 和 SQL Server Configuration Manager。這些工具可以簡(jiǎn)化基本的數(shù)據(jù)庫(kù)操作。通過(guò)與 Visual Studio 項(xiàng)目的集成,數(shù)據(jù)庫(kù)應(yīng)用程序的設(shè)計(jì)和開(kāi)發(fā)也變得更加簡(jiǎn)單。此外,我還將介紹通過(guò)移動(dòng)數(shù)據(jù)庫(kù)應(yīng)用程序(像移動(dòng)典型 Windows 文件一樣)來(lái)對(duì)其進(jìn)行部署的功能。服務(wù)和修補(bǔ)也得到了簡(jiǎn)化和自動(dòng)化。 SQL Server Express 使用與其他 SQL Server 2005 版本同樣可靠的、高性能的數(shù)據(jù)庫(kù)引擎,也使用相同的數(shù)據(jù)訪問(wèn) API(如 ADO.NET、SQL Native Client 和 T-SQL)。事實(shí)上,它與其他 SQL Server 2005 版本的不同僅體現(xiàn)在以下方面:
默認(rèn)情況下,在 SQL Server Express 中,啟用諸如自動(dòng)關(guān)閉和像復(fù)制文件一樣復(fù)制數(shù)據(jù)庫(kù)的功能,而禁用高可用性和商業(yè)智能功能。如果需要,也容易進(jìn)行伸縮,因?yàn)?SQL Server Express 應(yīng)用程序可以無(wú)縫地與 SQL Server 2005 Workgroup Edition、SQL Server 2005 Standard Edition 或 SQL Server 2005 Enterprise Edition 一起使用。通過(guò) Web 下載文件可以進(jìn)行免費(fèi)、快速、方便的部署。 本白皮書(shū)介紹 SQL Server Express 特有的組件和功能,如應(yīng)用程序 XCopy(用戶(hù)實(shí)例)、網(wǎng)絡(luò)和安全性。還介紹常見(jiàn)情況的使用原則。此外,我還將介紹使用 Microsoft Visual Studio 2005 輕松開(kāi)發(fā)數(shù)據(jù)應(yīng)用程序,這主要針對(duì)以下人員:
目標(biāo)情況 開(kāi)發(fā) SQL Server Express 是為了滿(mǎn)足以下兩個(gè)不同的用途。第一個(gè)用途是用作服務(wù)器產(chǎn)品,特別是作為 Web 服務(wù)器或數(shù)據(jù)庫(kù)服務(wù)器。第二個(gè)用途是用作本地客戶(hù)端數(shù)據(jù)存儲(chǔ)區(qū),其中應(yīng)用程序數(shù)據(jù)訪問(wèn)不依賴(lài)于網(wǎng)絡(luò)。易用性和簡(jiǎn)單性是主要設(shè)計(jì)目標(biāo)。 SQL Server Express 主要用于以下三種情況:
SQL Server Express 提供的易用、可靠的數(shù)據(jù)庫(kù)平臺(tái)功能豐富,可用于這些情況。特別要注意安裝和部署的易用性和可靠性使 ISV 的使用和重新發(fā)布變得輕松。 SQL Server 2005 Express Edition 的主要功能SQL Server Express 使用的數(shù)據(jù)庫(kù)引擎與其他 SQL Server 2005 版本相同,并且所有編程功能也相同。有關(guān)上述主題的其他信息,請(qǐng)參閱 SQL Server 2005 聯(lián)機(jī)叢書(shū)。下面詳細(xì)介紹了 SQL Server Express 特有的、并且/或者對(duì)客戶(hù)有較顯著影響的功能。 引擎規(guī)范 SQL 引擎支持 1 個(gè) CPU、 1 GB RAM 和 4 GB 的數(shù)據(jù)庫(kù)大小。此機(jī)制允許通過(guò)定義適當(dāng)?shù)臄帱c(diǎn)來(lái)輕松區(qū)別于其他 SQL Server 2005 版本。另外,沒(méi)有工作負(fù)荷中止值,并且引擎的執(zhí)行方式與其他版本相同。對(duì)可以附著到 SQL Server Express 的用戶(hù)數(shù)沒(méi)有硬編碼限制,但其 CPU 和內(nèi)存限制實(shí)際上限制可以從 SQL Server Express 數(shù)據(jù)庫(kù)獲取可接受響應(yīng)次數(shù)的用戶(hù)數(shù)。 SQL Server Express 可以安裝并運(yùn)行在多處理器計(jì)算機(jī)上,但是不論何時(shí),只使用一個(gè) CPU。在內(nèi)部,引擎將用戶(hù)調(diào)度程序線程數(shù)限制為 1,這樣一次只使用 1 個(gè) CPU。因?yàn)橐淮沃荒苁褂靡粋€(gè) CPU,所以不支持執(zhí)行諸如并行查詢(xún)這樣的功能。 1 GB RAM 限制是對(duì)緩存池的內(nèi)存限制。緩存池用于存儲(chǔ)數(shù)據(jù)頁(yè)和其他信息。但是,跟蹤連接、鎖等所需的內(nèi)存不計(jì)入緩存池限制。因此,服務(wù)器使用的總內(nèi)存有可能大于 1 GB,但用于緩存池的內(nèi)存絕不會(huì)超過(guò) 1 GB。不支持或不需要地址窗口化擴(kuò)展插件 (AWE) 或 3 GB 數(shù)據(jù)訪問(wèn)。 4 GB 數(shù)據(jù)庫(kù)大小限制僅適用于數(shù)據(jù)文件,而不適用于日志文件。但是,不限制可以附著到服務(wù)器的數(shù)據(jù)庫(kù)數(shù)。SQL Server Express 的啟動(dòng)略有變化。用戶(hù)數(shù)據(jù)庫(kù)不會(huì)自動(dòng)啟動(dòng),分布式事務(wù)處理協(xié)調(diào)器也不會(huì)自動(dòng)初始化。雖然對(duì)于用戶(hù)體驗(yàn)而言,除了啟動(dòng)速度更快之外,感覺(jué)不出什么變化。仍建議要使用 SQL Server Express 的編程人員在設(shè)計(jì)自己的應(yīng)用程序時(shí),牢記這些變化。 多個(gè) SQL Server 2005 Express 安裝可以與其他 SQL Server 2000、SQL Server 2005 或 Microsoft Desktop Engine (MSDE) 安裝共存于同一臺(tái)計(jì)算機(jī)上。通常,最好將 SQL Server 2000 實(shí)例升級(jí)到 Service Pack 4 (SP4)。在同一臺(tái)計(jì)算機(jī)上,最多可以安裝 16 個(gè) SQL Server Express 實(shí)例。這些實(shí)例的名稱(chēng)必須是唯一的,以便可以標(biāo)識(shí)它們。 默認(rèn)情況下,SQL Server Express 安裝為一個(gè)名為 SQLEXPRESS 的命名實(shí)例。這個(gè)特殊的實(shí)例可以在多個(gè)應(yīng)用程序和應(yīng)用程序供應(yīng)商之間共享。建議您使用此實(shí)例,除非您的應(yīng)用程序具有特殊配置要求。 可用于編程 SQL Server Express 的 API 與用于編程 SQL Server 2005 的 API 相同,這樣如果用戶(hù)選擇轉(zhuǎn)到其他 SQL Server 2005 版本,他們也不會(huì)感到有任何不適應(yīng)。支持 SQL Server 2005 中的所有新功能(例如公共語(yǔ)言運(yùn)行時(shí) (CLR) 集成)、新數(shù)據(jù)類(lèi)型(例如 VARCHAR(MAX) 和 XML)、用戶(hù)定義類(lèi)型和用戶(hù)定義聚合。此外,SQL Server Express 數(shù)據(jù)庫(kù)可以附著到 SQL Server 2005,而且使用 SQL Server Express 實(shí)例編寫(xiě)的應(yīng)用程序同樣可以與 SQL Server 2005 實(shí)例一起協(xié)調(diào)運(yùn)行。還支持復(fù)制和 SQL Service Broker 功能,該功能將在后面詳細(xì)介紹。 工具支持 SQL Server Express 是以易于使用為目的而設(shè)計(jì)的,其圖形用戶(hù)界面 (GUI) 工具甚至可以使數(shù)據(jù)庫(kù)初學(xué)者輕松使用 SQL Server Express 中的基本數(shù)據(jù)庫(kù)功能。名為 SQL Server Management Studio Express Edition 的新 GUI 工具可以作為獨(dú)立的 Web 下載文件獲得。SSMS-EE 可以使您輕松管理數(shù)據(jù)庫(kù)、執(zhí)行查詢(xún)分析功能,并且可以免費(fèi)重新發(fā)布。 SSMS-EE 可以連接到 SQL Server Express 和其他 SQL Server 2005 版本、SQL Server 2000 以及 MSDE 2000。連接時(shí),會(huì)顯示一個(gè)簡(jiǎn)單的連接對(duì)話框,引導(dǎo)用戶(hù)選擇要使用的實(shí)例和身份驗(yàn)證方法。可以進(jìn)行本地連接和遠(yuǎn)程連接。對(duì)象資源管理器將以分層方式枚舉并顯示使用的公共對(duì)象(例如實(shí)例、表、存儲(chǔ)過(guò)程等),有助于用戶(hù)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的可視化。 從對(duì)象資源管理器的快捷菜單中,可以訪問(wèn)所有數(shù)據(jù)庫(kù)管理功能。SSMS-EE 的功能(如創(chuàng)建和修改數(shù)據(jù)庫(kù)、表、視圖、登錄帳戶(hù)和用戶(hù))與其他版本中的完整 SQL Server Management Studio 相同。這使您在升級(jí)到 SSMS 完整版后,可以立即應(yīng)用在 SSMS-EE 中學(xué)到的技能。 許多數(shù)據(jù)庫(kù)用戶(hù)更喜歡使用 T-SQL 來(lái)管理其服務(wù)器,因?yàn)榕c使用圖形用戶(hù)界面相比,這種方法可以進(jìn)行更精密細(xì)致的控制。SSMS-EE 中的查詢(xún)編輯器允許用戶(hù)開(kāi)發(fā)和執(zhí)行 T-SQL 語(yǔ)句和腳本。查詢(xún)編輯器的功能豐富,例如關(guān)鍵字顏色代碼、結(jié)果窗格(用于以數(shù)據(jù)網(wǎng)格形式返回結(jié)果)。錯(cuò)誤消息(如果有)也將顯示在結(jié)果窗格中。SSMS-EE 支持 SSMS 的所有查詢(xún)編輯器功能,包括圖形查詢(xún)計(jì)劃。
圖 1:查詢(xún)編輯器 SSMS-EE 將通過(guò)獨(dú)立的 Web 下載文件進(jìn)行發(fā)布。用戶(hù)只需單擊可執(zhí)行文件就可以啟動(dòng)安裝程序。如果已安裝 SSMS,將無(wú)法安裝 SSMS-EE,因?yàn)椴恍枰惭b。同樣,用戶(hù)通過(guò)重新啟動(dòng)該安裝程序或使用“控制面板”中的“添加/刪除程序”菜單可以卸載 SSMS-EE。 SQL Server Express 附帶的一些工具包括 SQL 計(jì)算機(jī)管理器、SQL 命令 和 BCP。SQL 計(jì)算機(jī)管理器用于啟動(dòng)和停止 SQL Server 服務(wù),以及啟用和禁用網(wǎng)絡(luò)協(xié)議。SQL 命令用于使用命令行進(jìn)行連接和查詢(xún),而 BCP 用于大容量復(fù)制數(shù)據(jù)。 SQL 計(jì)算機(jī)管理器允許管理員配置基本服務(wù)和網(wǎng)絡(luò)協(xié)議,在 SQL Server 2005 中,與以前的工具(如服務(wù)器網(wǎng)絡(luò)實(shí)用工具、客戶(hù)端網(wǎng)絡(luò)實(shí)用工具和服務(wù)管理器)等效。SQL 計(jì)算機(jī)管理器不用于調(diào)整性能特征或 SQL Server 的操作。 在計(jì)算機(jī)管理器中,有一個(gè)名為“Microsoft SQL Servers”的節(jié)點(diǎn),其中包含所有服務(wù)、服務(wù)器網(wǎng)絡(luò)協(xié)議和客戶(hù)端網(wǎng)絡(luò)協(xié)議。服務(wù)節(jié)點(diǎn)列出了所有可用的 Express 服務(wù),并提供了諸如服務(wù)器實(shí)例名稱(chēng)、服務(wù)狀態(tài)和啟動(dòng)類(lèi)型之類(lèi)的詳細(xì)信息。您可以選擇某個(gè)特定服務(wù),然后執(zhí)行諸如啟動(dòng)、停止、暫?;蛑匦聠?dòng)服務(wù)之類(lèi)的操作?!胺?wù)器網(wǎng)絡(luò)協(xié)議”節(jié)點(diǎn)枚舉了計(jì)算機(jī)上每個(gè)實(shí)例的協(xié)議列表。右鍵單擊某個(gè)協(xié)議(例如 TCP 協(xié)議),可以從打開(kāi)的快捷菜單中啟用或禁用該協(xié)議,也可以更改其屬性?!翱蛻?hù)端網(wǎng)絡(luò)協(xié)議”節(jié)點(diǎn)也提供類(lèi)似選項(xiàng)。請(qǐng)注意,“服務(wù)器網(wǎng)絡(luò)協(xié)議”節(jié)點(diǎn)直接處理 SQL Server 實(shí)例上的協(xié)議設(shè)置,而“客戶(hù)端網(wǎng)絡(luò)協(xié)議”節(jié)點(diǎn)處理客戶(hù)端(如 MDAC 或 SQL Native Client 提供程序)的協(xié)議設(shè)置。使用“客戶(hù)端網(wǎng)絡(luò)協(xié)議”節(jié)點(diǎn)可以創(chuàng)建別名,該別名是 SQL Server 的備用名稱(chēng),可以包含服務(wù)器名稱(chēng)、使用的協(xié)議、連接字符串以及加密信息之類(lèi)的信息。 SQL 命令是現(xiàn)有 osql 工具的 OLE DB 版本,不僅嘗試保持與 osql 的功能性兼容,還支持新的 SQL Server 2005 數(shù)據(jù)類(lèi)型。所有命令行選項(xiàng)都將信息輸出到標(biāo)準(zhǔn)輸出,操作失敗時(shí)可能出現(xiàn)的錯(cuò)誤消息除外。SqlCmd -? 命令顯示 sqlcmd 開(kāi)關(guān)的語(yǔ)法摘要。 SQL 計(jì)算機(jī)管理器和 SQL 命令對(duì)于 SQL Server Express 和其他 SQL Server 2005 版本相同。 網(wǎng)絡(luò)支持 盡管用戶(hù)可以顯式打開(kāi)其他支持的協(xié)議(例如 TCP/IP 和 Named Pipes),但默認(rèn)情況下,SQL Server Express 只能訪問(wèn)本地計(jì)算機(jī)上的共享內(nèi)存連接類(lèi)型。SQL Server Express 不支持 VIA 協(xié)議和 HTTP 協(xié)議。因?yàn)槟J(rèn)情況下只能使用共享內(nèi)存,所以除非打開(kāi)網(wǎng)絡(luò),否則無(wú)法從遠(yuǎn)程計(jì)算機(jī)連接到 SQL Server Express。可以通過(guò)以下方式打開(kāi)網(wǎng)絡(luò):
在 SQL Server 2005 中,SQL Browser 是一項(xiàng)新服務(wù),用于標(biāo)識(shí)命名實(shí)例監(jiān)聽(tīng)的端口。由于共享內(nèi)存不使用該服務(wù),因此默認(rèn)情況下,該服務(wù)在 SQL Server Express 中處于關(guān)閉狀態(tài)。這意味著用戶(hù)必須啟動(dòng)該服務(wù),網(wǎng)絡(luò)訪問(wèn)才可以進(jìn)行。 注意:一個(gè)有趣的事實(shí)是 SQL Browser 監(jiān)聽(tīng) UDP 1434 端口。但是,占用 UDP 1434 端口的早于 SQL Server 2000 SP3 之前的版本可能會(huì)導(dǎo)致 SQL Browser 名稱(chēng)解析失敗,因?yàn)樗鼈兛赡芫芙^放棄該端口。解決方法是:將計(jì)算機(jī)上的所有 SQL Server 2000/MSDE 實(shí)例都升級(jí)到 SP3 版本或更高版本。
圖 2. 使用 SQL Sever 配置管理器啟用協(xié)議 數(shù)據(jù)訪問(wèn)支持 SQL Server 2005 Express 支持的本機(jī)提供程序和托管提供程序與其他 SQL Server 2005 版本相同。這樣會(huì)有巨大的好處:為 SQL Server Express 編寫(xiě)的應(yīng)用程序可以無(wú)縫用于其他 SQL Server 版本。 SQL Server 2005 Express 支持使用 ADO.NET 進(jìn)行托管訪問(wèn)。我們建議您使用 SqlClient 數(shù)據(jù)提供程序來(lái)開(kāi)發(fā)新的應(yīng)用程序,因?yàn)榇蠖鄶?shù)應(yīng)用程序 XCopy 功能僅能與 SqlClient 一起使用。ADO.NET 2.0 數(shù)據(jù)提供程序(Visual Studio 2005 中提供)支持 varchar(MAX) 和 XML 之類(lèi)的新 SQL Server 數(shù)據(jù)類(lèi)型以及用戶(hù)定義類(lèi)型。 從 SQL Server 2005 開(kāi)始,服務(wù)器中的邏輯會(huì)話與物理連接分離。客戶(hù)端傳輸層和服務(wù)器傳輸層都將更新為提供多路復(fù)用功能,這樣只使用一個(gè)物理連接就可以建立多個(gè)邏輯會(huì)話。這使得客戶(hù)端針對(duì)同一個(gè)連接可以有多個(gè)活動(dòng)的結(jié)果集 (MARS)。請(qǐng)注意,一般而言,MARS 并不是為了避免使用多個(gè)連接。在 SQL Server 2005 中,MARS 默認(rèn)情況下處于關(guān)閉狀態(tài),使用 MARS 可以交替執(zhí)行 SQL 操作。例如,您可以對(duì)一個(gè)結(jié)果集進(jìn)行操作,也可以在處理該結(jié)果集時(shí)對(duì)數(shù)據(jù)庫(kù)執(zhí)行語(yǔ)句,而無(wú)需打開(kāi)新的連接。在許多情況下,MARS 可以有效替代服務(wù)器游標(biāo),當(dāng)數(shù)據(jù)檢索操作和更新操作在同一個(gè)事務(wù)中進(jìn)行時(shí),尤為有用。 SQL Server 2005 客戶(hù)端也支持異步輸入輸出 (I/O),這樣應(yīng)用程序線程不會(huì)再被數(shù)據(jù)傳輸操作阻塞,客戶(hù)端應(yīng)用程序就可以盡快作出響應(yīng)。在這種模式下,I/O 調(diào)用將會(huì)立即返回,完成后將異步通知應(yīng)用程序。這使得應(yīng)用程序可以繼續(xù)其他處理過(guò)程,并在以后檢查 I/O 完成事件。 SQL Server 2005 時(shí)間范圍內(nèi)的數(shù)據(jù)訪問(wèn)組件將分成兩部分:MDAC 堆棧(屬于操作系統(tǒng))和 SQL Native Client 提供程序(向 SQL Server 提供用于本機(jī)數(shù)據(jù)訪問(wèn)的特定數(shù)據(jù)訪問(wèn)庫(kù))。SQL Native Client 針對(duì) SQL OLEDB、SQL ODBC 和 ADO 客戶(hù),這些客戶(hù)正在編寫(xiě)新的應(yīng)用程序或增強(qiáng)現(xiàn)有應(yīng)用程序以利用 SQL Server 2005 的新功能。 SQL Native Client 將 SQL Server 2005 添加項(xiàng)包含到 SQL OLE DB、SQL ODBC、SQL BCP 和 SQL 網(wǎng)絡(luò)接口。只有 C 或 C++ 程序員才可以通過(guò) SQL Native Client 使用 SQL Server 2005 功能,例如 MARS、用戶(hù)定義類(lèi)型、XML 數(shù)據(jù)類(lèi)型等。SQL Native Client 由新的組件構(gòu)成(新類(lèi) ID),這些組件獨(dú)立于 MDAC 中的現(xiàn)有組件,并且與其不同。例如,使用的 OLE DB Progid 是 SQLNCLI;ODBC 驅(qū)動(dòng)程序名稱(chēng)是 SQL Native Client;使用的頭文件是 SQLNCLI.h。 SQL Native Client 作為單個(gè) dll (SQLNCLI.dll) 提供,而不作為操作系統(tǒng)組件提供,這樣可以簡(jiǎn)化服務(wù),使重新發(fā)布和部署應(yīng)用程序變得更輕松。隨著新版 SQL Server 的發(fā)布,將會(huì)提供更新的 SQL Native Client 版本,應(yīng)用程序可以顯式更改其配置清單以使用較此提供程序的更高版本。 在 MDAC 提供程序和 SQL Native Client 提供程序之間存在一些基于交互的有趣動(dòng)態(tài)。例如,MDAC 2.5、2.7 或 2.8 無(wú)法使用共享內(nèi)存連接到 SQL Server 2005。這會(huì)影響使用 SQL OLE DB 或 SQL ODBC 的所有本機(jī)應(yīng)用程序,不僅包括現(xiàn)有本機(jī)應(yīng)用程序,而且還包括托管的 OLE DB 或 ODBC 應(yīng)用程序,因?yàn)樗鼈冊(cè)趦?nèi)部都使用了 MDAC。通常,對(duì)于 SQL Server,如果共享內(nèi)存連接失敗,將使用網(wǎng)絡(luò)協(xié)議(例如 TCP/IP)。但是,對(duì)于 SQL Server Express,因?yàn)榫W(wǎng)絡(luò)在默認(rèn)情況下是關(guān)閉的,所以這些應(yīng)用程序?qū)⑼耆珶o(wú)法連接。解決辦法是:將應(yīng)用程序改為使用 SQL Native Client 提供程序,或者啟用網(wǎng)絡(luò)傳輸控制協(xié)議 (TCP) 并啟動(dòng) SQL Browser。 安全性 對(duì)于 SQL Server Express,我們的一個(gè)目標(biāo)是為不同組件提供安全的默認(rèn)值。例如,關(guān)閉網(wǎng)絡(luò)協(xié)議(如 TCP/IP 和 Named Pipes)。不啟動(dòng) SQL Browser 服務(wù),除非用戶(hù)在安裝命令行中顯式請(qǐng)求啟動(dòng)。如果使用 Windows 身份驗(yàn)證,則默認(rèn)情況下禁用 SA 帳戶(hù)或系統(tǒng)管理員帳戶(hù)。計(jì)算機(jī)上的普通用戶(hù)幾乎沒(méi)有對(duì) SQL Server Express 實(shí)例的權(quán)限。服務(wù)器上的本地管理員必須向普通用戶(hù)顯式授予相關(guān)權(quán)限,這些用戶(hù)才能使用 SQL 功能。 在 SQL Server 中,SA 登錄帳戶(hù)是一個(gè)特殊的登錄帳戶(hù),是系統(tǒng)管理員 (sysadmin) 角色的成員。主要用于使用 SQL 身份驗(yàn)證模式的配置中,而不用于 Windows 身份驗(yàn)證模式。出于安全原因,SQL 驗(yàn)證模式要求輸入強(qiáng) SA 密碼,在 GUI 安裝和無(wú)提示 SQL 身份驗(yàn)證模式安裝期間,用戶(hù)必須輸入強(qiáng) SA 密碼。但是,對(duì)于無(wú)提示 Windows 身份驗(yàn)證安裝,不需要 SA 密碼。原因是使用 Windows 身份驗(yàn)證模式時(shí),如果用戶(hù)未指定密碼,無(wú)提示 SQL Server Express 安裝程序會(huì)提供一個(gè)隨機(jī)的強(qiáng) SA 密碼。在這種情況下,安裝程序也會(huì)禁用 SA 帳戶(hù),因此如果您想要使用 SA 帳戶(hù),必須稍后使用 T-SQL 顯式啟用該帳戶(hù)。這樣,在使用 Windows 身份驗(yàn)證時(shí),ISV 就不必提供密碼了,從而不會(huì)阻塞大規(guī)模部署情況。在將來(lái)的版本中,此功能可能還會(huì)擴(kuò)展到基于 GUI Windows 的安裝。 復(fù)制支持 用戶(hù)通過(guò)復(fù)制可以使用“發(fā)布服務(wù)器 - 訂閱服務(wù)器”模式以用戶(hù)定義的間隔保持多個(gè)站點(diǎn)的數(shù)據(jù)副本同步。SQL Server Express 支持訂閱合并發(fā)布、快照發(fā)布和事務(wù)性發(fā)布,但不允許自己發(fā)布。在 SQL Server Express 中,復(fù)制訂閱完全正常運(yùn)行。但是,因?yàn)?SQL Server Express 不附帶 SQL 代理,所以計(jì)劃訂閱比較困難。您可以通過(guò)以下方法同步 SQL Server Express 訂閱:
SQL Service Broker SQL Service Broker (SSB) 是 SQL Server 2005 中一個(gè)新的、可靠的消息傳送基礎(chǔ)結(jié)構(gòu)。該服務(wù)程序可以選擇通過(guò)對(duì)等消息交換約定(稱(chēng)為對(duì)話框)進(jìn)行通信。此功能可以通過(guò) T-SQL 語(yǔ)言的擴(kuò)展插件來(lái)訪問(wèn)。 SQL Server Express 只有在與其他 SQL Server 2005 版本一起使用時(shí),才可以使用 Service Broker。如果 SQL Server Express 接收到一條來(lái)自另一個(gè) SQL Server Express 實(shí)例的 Broker 消息,并且另一個(gè) SQL Server 2005 版本未處理該消息,則該消息將被刪除。因此,消息可以源于一個(gè) SQL Server Express 實(shí)例而終止于另一個(gè) SQL Server Express 實(shí)例,但是如果要這樣,該消息必須通過(guò)非 SQL Server Express 實(shí)例進(jìn)行路由。您可以檢查 Message Drop 跟蹤事件,該事件可以通過(guò)事件探查器訪問(wèn),也可以使用跟蹤存儲(chǔ)過(guò)程來(lái)跟蹤此類(lèi)事件。與刪除的消息關(guān)聯(lián)的錯(cuò)誤消息包括與以下消息類(lèi)似的消息:"This message has been dropped due to licensing restrictions."(“由于授權(quán)限制,此消息已被刪除?!保? 以擴(kuò)展情況為例。應(yīng)用程序在收銀機(jī)上部署了 100 個(gè) SQL Server Express 實(shí)例。它們正連接到后端的非 SQL Server Express 服務(wù)器上。只要后端服務(wù)器涉及所有對(duì)話框,就會(huì)發(fā)生這種情況。SQL Server Express 實(shí)例無(wú)法在不經(jīng)過(guò)后端服務(wù)器的情況下成功進(jìn)行會(huì)話。 用戶(hù)實(shí)例 用戶(hù)實(shí)例是 SQL Server Express 中的新功能,可以像處理文件一樣處理數(shù)據(jù)庫(kù)。現(xiàn)在,本地?cái)?shù)據(jù)庫(kù)可以隨應(yīng)用程序一起移動(dòng)、復(fù)制或通過(guò)電子郵件傳送。在新的位置,不需要進(jìn)行額外配置就可以使其正常運(yùn)行。用于在 SQL Server Express 中啟用應(yīng)用程序用戶(hù)實(shí)例支持的主要功能有三個(gè):連接字符串中的 AttachDBFilename 選項(xiàng)、不需要指定邏輯數(shù)據(jù)庫(kù)名稱(chēng)和“用戶(hù)實(shí)例”選項(xiàng)。 在用戶(hù)實(shí)例支持中,暗含著幾個(gè)假設(shè)。假設(shè)實(shí)例名為 SQLEXPRESS 的 SQL Server Express 已安裝在計(jì)算機(jī)上。還假設(shè)它是一個(gè)僅托管堆棧解決方案,您必須使用 .NET SQL Server 數(shù)據(jù)訪問(wèn)接口開(kāi)發(fā)可部署的 XCopy 應(yīng)用程序。也就是說(shuō),不能使用 SQL Native Client 或 MDAC 來(lái)開(kāi)發(fā)可用于用戶(hù)實(shí)例的應(yīng)用程序。 通常,應(yīng)用程序開(kāi)發(fā)人員僅將用戶(hù)數(shù)據(jù)庫(kù)和日志文件隨應(yīng)用程序一起復(fù)制。但是,在 SQL Server 中,一個(gè)特定數(shù)據(jù)庫(kù)(稱(chēng)為 master 數(shù)據(jù)庫(kù))中存在多個(gè)配置條目。依賴(lài)于 master 數(shù)據(jù)庫(kù)中的條目的功能包括 SQL 身份驗(yàn)證(建議您盡可能使用 Windows 身份驗(yàn)證)。如果您的應(yīng)用程序依賴(lài)于 master 數(shù)據(jù)庫(kù)中的任何條目,則應(yīng)用程序開(kāi)發(fā)人員必須確保將這些配置條目復(fù)制到目標(biāo)系統(tǒng)中。一個(gè)方法是:當(dāng)將運(yùn)行的應(yīng)用程序安裝到目標(biāo)計(jì)算機(jī)上時(shí),要隨之包括一個(gè) SMO、DMO 或 T-SQL 配置腳本。對(duì)于大多數(shù)使用 Windows 身份驗(yàn)證運(yùn)行的應(yīng)用程序,從 master 數(shù)據(jù)庫(kù)復(fù)制信息并不難。 AttachDBFileName 您可以為 AttachDBFileName 連接字符串條目指定相對(duì)文件路徑或絕對(duì)文件路徑。當(dāng)打開(kāi)連接時(shí),將附著指定的數(shù)據(jù)庫(kù)文件,此數(shù)據(jù)庫(kù)用作該連接的默認(rèn)數(shù)據(jù)庫(kù)。如果調(diào)用 AttachDBFileName 時(shí)該數(shù)據(jù)庫(kù)已附著,則附著操作不會(huì)產(chǎn)生任何影響。此關(guān)鍵字支持稱(chēng)為 |DataDirectory| 的特定字符串,該字符串在運(yùn)行時(shí)指向存儲(chǔ)數(shù)據(jù)庫(kù)文件的應(yīng)用程序的數(shù)據(jù)目錄。此特定字符串應(yīng)位于文件路徑的起始處,僅對(duì)本地文件系統(tǒng)有效,并且會(huì)檢查 \..\ 語(yǔ)法以便該文件路徑不高于替換字符串指向的目錄。 使用 AttachDBFileName 時(shí),日志文件的用法有些變化。日志文件名的格式必須為: SQL Server 支持對(duì)一個(gè)數(shù)據(jù)庫(kù)使用多個(gè)數(shù)據(jù)和日志文件,這些文件可以分布在多個(gè)文件組中。AttachDBFileName 語(yǔ)法不支持此功能,也不支持網(wǎng)路共享、HTTP 路徑或通用命名約定 (UNC) 遠(yuǎn)程數(shù)據(jù)庫(kù)。 邏輯數(shù)據(jù)庫(kù)名稱(chēng) 如果在連接字符串中未指定邏輯數(shù)據(jù)庫(kù)名稱(chēng),則將為要附著的數(shù)據(jù)庫(kù)自動(dòng)生成一個(gè)名稱(chēng)。該名稱(chēng)是基于 .mdf 文件的相對(duì)文件路徑生成的。例如,如果文件位于 c:\myDocuments\Myapp\myDB.mdf,則邏輯數(shù)據(jù)庫(kù)名稱(chēng)將基于完整路徑。如果文件路徑的字符多于 128 個(gè),則此功能將使用現(xiàn)有路徑和一個(gè)哈希來(lái)生成邏輯數(shù)據(jù)庫(kù)名稱(chēng)。這是 SQL Server Express 中的新功能,因?yàn)樵?SQL Server 2000 中不指定數(shù)據(jù)庫(kù)名稱(chēng)將導(dǎo)致出現(xiàn)錯(cuò)誤。支持的語(yǔ)法包括 database=; 或 initial catalog=;,或者用戶(hù)也可以在連接字符串中完全省略它們。 在同一臺(tái)計(jì)算機(jī)上移動(dòng)或復(fù)制數(shù)據(jù)庫(kù)時(shí),此功能非常有用,因?yàn)榛谖募窂降倪壿嬅Q(chēng)是唯一的。如果沒(méi)有此功能,則在使用同一個(gè)邏輯名稱(chēng)打開(kāi)兩個(gè)不同目錄中的數(shù)據(jù)庫(kù)時(shí),SQL Server 中將會(huì)發(fā)生命名沖突。計(jì)算機(jī)之間還支持應(yīng)用程序 XCopy。 請(qǐng)注意,仍然可以使用關(guān)鍵字 database 或 Initial Catalog 來(lái)顯式指定邏輯數(shù)據(jù)庫(kù)名稱(chēng)。用戶(hù)在使用復(fù)制、使用 SQL Service Broker、在 T-SQL 查詢(xún)中使用多個(gè)部分組成的名稱(chēng)或使用跨數(shù)據(jù)庫(kù)方案時(shí),可能想要顯式指定邏輯數(shù)據(jù)庫(kù)名稱(chēng)。 自動(dòng)關(guān)閉 SQL 2000 具有自動(dòng)關(guān)閉功能,此功能在 SQL Server Express 中,默認(rèn)情況下處于啟用狀態(tài)。此功能在不存在到用戶(hù)數(shù)據(jù)庫(kù)的活動(dòng)連接時(shí),解除對(duì)用戶(hù)數(shù)據(jù)庫(kù)的文件鎖定。這樣,在使用該數(shù)據(jù)庫(kù)的應(yīng)用程序關(guān)閉后,就可以移動(dòng)或復(fù)制該數(shù)據(jù)庫(kù)了。 但是,在用戶(hù)看來(lái),自動(dòng)關(guān)閉功能并非始終有效,特別是在發(fā)生意外客戶(hù)端終止或使用連接池時(shí)。對(duì)于意外客戶(hù)端終止,連接最終會(huì)被超時(shí)機(jī)制清除。連接池啟用后,用戶(hù)調(diào)用連接關(guān)閉時(shí),連接實(shí)際上并沒(méi)有關(guān)閉,而是返回到連接池。為了關(guān)閉所有連接,通常不得不關(guān)閉應(yīng)用程序域或所有打開(kāi)的連接。ADO.NET 還包含 ClearPool 之類(lèi)的函數(shù),用于手動(dòng)重設(shè)。 用戶(hù)實(shí)例 用戶(hù)實(shí)例允許非管理員用戶(hù)附著和管理 SQL Server Express 數(shù)據(jù)庫(kù)。他們通過(guò)創(chuàng)建 SQL Server 專(zhuān)用副本來(lái)進(jìn)行附著和管理,該副本運(yùn)行在打開(kāi)與某個(gè)數(shù)據(jù)庫(kù)的連接的用戶(hù)的安全上下文中。打開(kāi)連接的用戶(hù)成為用戶(hù)實(shí)例的服務(wù)帳戶(hù),從而具有完整的數(shù)據(jù)庫(kù)系統(tǒng)管理員權(quán)限。這些權(quán)限允許非管理員 Windows 用戶(hù)具有數(shù)據(jù)庫(kù)管理員權(quán)限,從而允許用戶(hù)使用 AttachDBFilename 附著數(shù)據(jù)庫(kù)。這些權(quán)限還允許用戶(hù)創(chuàng)建任何必要的數(shù)據(jù)庫(kù)對(duì)象;使得此模式對(duì)于開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序比較理想。 安裝和部署 SQL Server Express 安裝程序是 SQL Server 2005 安裝程序的簡(jiǎn)化版本,它功能強(qiáng)大、可靠,并且支持 GUI 和無(wú)提示安裝兩種模式。僅支持基于 Windows 安裝程序 (.msi) 的技術(shù)。 SQL Server Express Web 下載文件使用稱(chēng)為 SFXCab 的 Microsoft 安裝技術(shù)被打包成一個(gè)可執(zhí)行文件。您可以從 Microsoft 下載中心下載 SQL Server Express。雙擊 .exe 文件將自動(dòng)啟動(dòng)安裝進(jìn)程。 Visual Studio 2005 版本的 .NET Framework 是安裝 SQL Server Express 的必備組件,如果在計(jì)算機(jī)上找不到正確版本,安裝程序?qū)⑸慑e(cuò)誤。在安裝程序?qū)嶋H運(yùn)行之前,會(huì)運(yùn)行一個(gè)稱(chēng)為系統(tǒng)配置檢查 (SCC) 的組件。此組件驗(yàn)證系統(tǒng)是否滿(mǎn)足安裝的最低要求;包括最低硬件要求、最低操作系統(tǒng)要求、掛起的重新啟動(dòng)要求等。許多用戶(hù)可能無(wú)法滿(mǎn)足掛起的重新啟動(dòng)要求,這意味著用戶(hù)必須重新啟動(dòng)計(jì)算機(jī),SQL Server Express 安裝才能繼續(xù)。SCC 的主要優(yōu)點(diǎn)是可以及早標(biāo)識(shí)出因計(jì)算機(jī)配置此外引起的常見(jiàn)安裝錯(cuò)誤,進(jìn)而向用戶(hù)顯示相應(yīng)的警告和錯(cuò)誤消息。例如,如果計(jì)算機(jī)只有 256 MB 的內(nèi)存,SCC 將顯示警告,但會(huì)繼續(xù)安裝。下面的圖 3 顯示了 SCC 屏幕快照示例。
圖 3. 系統(tǒng)配置檢查 安裝程序啟動(dòng)后,您可以看到屏幕被簡(jiǎn)化了,任何開(kāi)發(fā)人員都可以進(jìn)行訪問(wèn)。例如,默認(rèn)情況下,使用“隱藏高級(jí)配置”復(fù)選框隱藏了一些復(fù)雜的對(duì)話框(如用于處理排序規(guī)則和服務(wù)帳戶(hù)的對(duì)話框)。如果用戶(hù)沒(méi)有選中此選項(xiàng),則會(huì)顯示高級(jí)配置對(duì)話框。默認(rèn)情況下,安裝日志記錄功能被打開(kāi),這樣用戶(hù)可以使用 \Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG 目錄中創(chuàng)建的日志文件輕易了解所有安裝故障。 默認(rèn)情況下,SQL Server Express 安裝為一個(gè)名為 SQLEXPRESS 的命名實(shí)例,建議應(yīng)用程序使用共享的 SQLEXPRESS 實(shí)例。默認(rèn)情況下,SQL 中有幾項(xiàng)功能也被關(guān)閉,因此您必須顯式選擇要安裝的組件。下面顯示了功能組件樹(shù)屏幕,從中您可以手動(dòng)復(fù)選要安裝的項(xiàng)目。安裝命令行 ADDLOCAL=All 將選擇安裝所有組件。下面的表 1 中顯示了功能組件樹(shù) GUI 條目和相應(yīng)的命令行選項(xiàng)。
當(dāng)您自己安裝產(chǎn)品時(shí),建議您使用 GUI 安裝模式。通常,您可以從 Microsoft 站點(diǎn)下載 SQL Server Express,也可以從應(yīng)用程序 CD 獲得。 建議您在安裝應(yīng)用程序過(guò)程中安裝 SQL Server Express 時(shí)使用無(wú)提示安裝模式。在這種模式下,您可以驗(yàn)證計(jì)算機(jī)中是否存在名為 SQLEXPRESS 的實(shí)例,如果不存在,請(qǐng)進(jìn)行無(wú)提示安裝。有兩種方法可以很容易地確定計(jì)算機(jī)上是否存在 SQL Server Express 實(shí)例:
您可以使用安裝引導(dǎo)程序或 Visual Studio“單擊一次”技術(shù)來(lái)包括 SQL Server Express Microsoft Windows Installer (MSI) 或 Web 下載文件 exe,這對(duì)于 ISV 特別有用。如果 SQLEXPRESS 實(shí)例已經(jīng)存在,就不應(yīng)該繼續(xù)安裝 SQL Server Express。需要注意的重要一點(diǎn)是:Microsoft 不支持 .msi 鏈接,因而不應(yīng)該使用。SQL Server Express 也不支持合并模塊。如果某個(gè)現(xiàn)有 MSDE 安裝未顯示在“控制面板”的“添加/刪除程序”菜單中,則必須清除 SQL Server Express 的安裝。 以下列出了一些常用的命令行參數(shù)。
語(yǔ)言支持 SQL Server Express 數(shù)據(jù)庫(kù)引擎支持 MSDE 支持的全部 12 種語(yǔ)言。目標(biāo)語(yǔ)言包括:英語(yǔ)、葡萄牙語(yǔ)(巴西)、荷蘭語(yǔ)、簡(jiǎn)體中文、繁體中文、法語(yǔ)、德語(yǔ)、意大利語(yǔ)、日語(yǔ)、朝鮮語(yǔ)和西班牙語(yǔ)。 支持注意事項(xiàng) 通過(guò)新聞組、基于 Web 的文檔和資源(例如 SQL 聯(lián)機(jī)叢書(shū)和白皮書(shū)),對(duì) SQL Server Express 提供支持。 硬件/軟件要求
64 位支持 SQL Server Express 將支持 x64 平臺(tái)上的 Windows on Windows (WOW)。WOW 實(shí)質(zhì)上是在 64 位計(jì)算機(jī)上運(yùn)行 32 位 SQL Server Express。SQL Server Express 不能安裝在 IA64 計(jì)算機(jī)上。 SQL Server Express 沒(méi)有的功能 其他 SQL 版本具有的某些功能,SQL Server Express 卻不具有,這些功能包括:
請(qǐng)注意,在 2006 年,全文搜索和 Reporting Services 功能將添加到 SQL Server Express Edition 中。 Visual Studio 集成SQL Server Express 隨所有 Visual Studio 版本一起安裝。Visual Studio 使用實(shí)例名稱(chēng) SQLEXPRESS 安裝 SQL Server Express。在 SQL Server Express 中,應(yīng)用程序依賴(lài)于 SQLEXPRESS 實(shí)例名稱(chēng)。集成 Visual Studio 和 SQL Server Express 是為了讓使用 SQL Server Express 訪問(wèn)數(shù)據(jù)庫(kù)與使用 Jet 訪問(wèn)一樣簡(jiǎn)單容易。這對(duì)于客戶(hù)端應(yīng)用程序和 ASP.NET Web 服務(wù)器兩種情況都是如此。 例如,在 Visual Studio 項(xiàng)目中引入了一個(gè)數(shù)據(jù)庫(kù)對(duì)象,該對(duì)象模板 SQL Server 數(shù)據(jù)庫(kù)。當(dāng)用戶(hù)在 Visual Studio 項(xiàng)目中選擇“添加新對(duì)象”選項(xiàng)時(shí),將顯示此對(duì)象。將數(shù)據(jù)庫(kù)添加到項(xiàng)目后,將對(duì)該數(shù)據(jù)庫(kù)自動(dòng)進(jìn)行連接管理,這樣用戶(hù)就可以單擊該數(shù)據(jù)庫(kù)來(lái)查看數(shù)據(jù)庫(kù)中的所有對(duì)象,例如表、存儲(chǔ)過(guò)程等。我們?yōu)槟峁┝酥苯訉⑾嚓P(guān)表拖放到表單中的功能。如果使用 Visual Web Developer,將自動(dòng)創(chuàng)建 GridView 和 SqlDataSource,而不需要用戶(hù)在代碼行中鍵入。您也可以?xún)H通過(guò)拖放操作,將某個(gè)控件(如文本框)自動(dòng)綁定到某個(gè)數(shù)據(jù)庫(kù)值。所有連接字符串設(shè)置都存儲(chǔ)在中心 Web.config 文件中,這樣用戶(hù)便必須在一個(gè)單獨(dú)的位置才能進(jìn)行修改。 Visual Studio 使用 SQL Server Express 中的用戶(hù)實(shí)例,所以在 Visual Studio 項(xiàng)目中,可以像處理 Windows 文件一樣處理 SQL Server 數(shù)據(jù)庫(kù)文件。例如,您可以像處理 Jet 文件一樣,重命名、刪除、復(fù)制或移動(dòng)數(shù)據(jù)目錄中的數(shù)據(jù)庫(kù) (.mdf) 文件。對(duì)關(guān)聯(lián)日志文件 (.ldf) 的操作與 .mdf 文件一樣,因?yàn)?Visual Studio 保持這些文件之間的關(guān)聯(lián)。Visual Studio 管理這些操作,即使運(yùn)行的 ASP.NET 頁(yè)面或進(jìn)程針對(duì)的是數(shù)據(jù)庫(kù),這些操作也會(huì)成功。這意味著通常的 Visual Studio 應(yīng)用程序開(kāi)發(fā)人員不需要在設(shè)計(jì)和開(kāi)發(fā)期間擔(dān)心日志文件。但是,在部署期間,日志文件必須與數(shù)據(jù)庫(kù)文件一起傳輸。 與其他免費(fèi) Microsoft 數(shù)據(jù)庫(kù)的比較與 MSDE 的比較 在 SQL Server 2005 中,SQL Server Express 代替了 Microsoft SQL Server Desktop Engine (MSDE),提供了很多易用的功能,可供非專(zhuān)業(yè)開(kāi)發(fā)人員或愛(ài)好者使用。MSDE 基于 SQL 2000 技術(shù),建議用于 Windows 9x 平臺(tái),而 SQL Server Express 基于 SQL Server 2005 技術(shù)。SQL Server Express 具有諸如應(yīng)用程序 XCopy、有效的安裝程序 UI、CLR 支持、GUI 工具和 Visual Studio 集成之類(lèi)的功能,而 MSDE 不具有這些功能。但是,與 MSDE 相比,有些功能 SQL Server Express 也不具有。這些功能包括:DTS、復(fù)制發(fā)布和 SQL 代理。 在 MSDE 中,一直可以在部署時(shí)使用合并模塊功能,而 SQL Server Express 不具有此功能。MSDE 中的工作負(fù)荷中止值有時(shí)難以理解和使用。在 SQL Server Express 中,不再使用此中止值,引擎改為使用 CPU、RAM 和數(shù)據(jù)庫(kù)大小限制,這與其他版本不同。下表顯示了這兩個(gè)產(chǎn)品的比較結(jié)果。
與 Jet 的比較 SQL Server Express 基于最新的 SQL Server 2005 技術(shù),而 Jet 相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)一直處于 Servive Pack 和維護(hù)階段。僅 SQL Server Express 提供所有最新、最強(qiáng)大的功能,例如 CLR 集成和 XML 支持。SQL Server Express 的可靠性和可伸縮性也明顯優(yōu)于 Jet。為 SQL Server Express 編寫(xiě)的應(yīng)用程序可以輕松移植到 SQL Server Workgroup Edition、SQL Server Standard Edition 或 SQL Server Enterprise Edition,而 Jet 實(shí)現(xiàn)這種伸縮比較困難。SQL Server Express 還對(duì)其數(shù)據(jù)庫(kù)對(duì)象提供更加細(xì)化的安全性控制。使用 Visual Studio 2005 集成和用戶(hù)實(shí)例功能,我們將 Jet 的易用性引入 SQL Server。 結(jié)論SQL Server Express 是一款重要的 Microsoft 產(chǎn)品版本,因?yàn)樵摦a(chǎn)品專(zhuān)用于非專(zhuān)業(yè)開(kāi)發(fā)人員、ISV 和愛(ài)好者。它免費(fèi)、易用、具有強(qiáng)大的功能,并且可以無(wú)縫升級(jí)到其他 SQL Server 版本。有一些功能(例如用戶(hù)實(shí)例)是此 SQL Server 版本的專(zhuān)有功能,并且默認(rèn)情況下,安裝和部署都是安全的。與現(xiàn)有的免費(fèi) Microsoft 數(shù)據(jù)庫(kù)(Jet 和 MSDE)相比,SQL Server Express 的優(yōu)勢(shì)明顯。SQL Server Express 與 Visual Studio 2005 的集成也簡(jiǎn)化了您的數(shù)據(jù)庫(kù)設(shè)計(jì)和部署操作。 該文章在 2011/3/16 18:00:42 編輯過(guò) |
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)... |