因為Access並不真正為高效能應用程式服務,所以一個希望有多個同時串連使用者的網站必須部署一個比Access更適合的資料來源。本文將講述如何從Microsoft SQL Server(一種企業級RDMS)中擷取資料。
SQL Server完全版包括了三個部分。第一個是引擎,用於實際組織資料以及針對命令響應進行讀取和寫入操作。第二個是開發人員的工具軟體包,用於對資料庫進行操作,例如Query Analyzer和Data Transformation Services。最後一個是用於管理資料的工具,包括備份程式和複製模式。
雖然完全版對大型企業來說有著不可估量的好處,但是很多開發人員並不需要整套工具。幸運的是,Microsoft提供了一個SQL Server引擎的免費版,叫做SQL Server Express(SSE)。儘管它具有一個使用T-SQL命令來匯入模式和資料的命令列工具(osql.exe),但是它還不包含在SQL Server完全版中具有的豐富圖形化的工具。不過,可以方便地使用Visual Studio或者Visual Web Developer來使用SSE開發資料庫。SSE有一個限制,即只處理本地的串連(不可能在Web伺服器之外的不同機器上運行SSE)。對於具有某些嗜好的人以及學生的Web網站來說,SSE是一個非常適合的選擇。可能會使用基於SQL Server 2000的MSDE,而SSE則基於SQL Server的Yukon版。
除非有另外特別的說明,這裡所介紹的所有技術均可應用於SQL Server的三種形式(完全版產品、SSE和MSDE),因此,通用術語SQL Server包含了這三種形式。
因為SSE只是一個引擎而並沒有內建的開發工具(到2004年),所以必須使用其他的工具來建立、修改或者填充資料庫。為此我們將要使用的主要工具是Visual Studio或者Visual Web Developer,其中提供了Database Explorer作為其介面的一部分。請注意Database Exporer可以更改本機資料庫中的資料和模式,但是它只能更改遠端資料庫中的資料(而不是結構)。在Visual Studio中,Database Explorer被稱為Server Explorer,因為它包括了一些處理非資料庫伺服器的附加功能。我們還將在本書的開端簡單地使用osql.exe命令列工具來匯入將在本書通篇使用的初始資料庫。修改資料庫結構的第三種方式是開啟Access,然後在SSE資料庫中連結一個外部表格。
使用SQL Server需要熟悉一些詞彙。SQL Server安裝在一台稱為伺服器(server)的機器上,並且可以通過其機器名來引用。如果SQL Server與請求軟體位於同一台機器上,那麼這台機器可以用(local)來引用。引擎可以在一台機器上安裝多次,每一次安裝稱為一個執行個體(instance)。SSE安裝一個名為(local)\SQLExpress的執行個體。在一個執行個體內,可以建立資料庫(database)。資料庫有一些具有欄位(field)和記錄(record)的表(table)。資料庫還有供資料使用者使用的一組表、欄位和約束,稱為視圖(view)。預存程序(stored procedures,SPROC)可以對資料執行任務。一個SQL Server執行個體自動安裝了一個使用者名稱為sa的賬戶,當對使用者使用SQL Server認證時,這個賬戶具有對所有對象進行所有動作的許可權。在使用Windows認證(也稱為混合認證)的時候,登入進Windows的使用者也同時登入進了SSE。
使用SQL Server資料庫之前的準備
花時間在研究資料庫上將減少您設計使用資料的頁面時的錯誤。在編寫使用SQL Server的頁面之前,請檢查您是否已掌握了如下幾類資訊:
· 伺服器、執行個體和資料庫名稱—— 確認伺服器名稱、執行個體和資料庫名稱的確切拼字。如果在伺服器上只有一個完全版SQL Server的執行個體,那就不需要使用執行個體名了。但是即使在伺服器上只有一個SSE的執行個體,也必須用MyServer\SQLExpress來顯式地引用。請明確是將要測試實際資料還是測試資料庫的部署備份。
· 安全資訊—— 您需要知道您的使用者ID和密碼,以便對開發資料庫的訪問進行認證。同樣地,請檢查SSE是使用Windows認證還是SQL認證(第1章中的安裝曾說明SSE應該使用Windows認證)。
· 資料庫模式—— 理解資料庫的模式。獲得表和欄位名、自動產生或鎖定的欄位、相關性以及約束的確切拼字。仔細注意對象名稱中的底線和空格。從資料庫管理員那裡查到是直接使用表還是使用視圖或者預存程序(SPROC)。使用後者將可能需要特殊資料類型的參數。用來檢查這些中繼資料的SQL文法羅列在本章的後面。
· 測試SQL語句(可選)—— 您可能會懷疑SQL語句的文法或者邏輯。您將會發現測試語句的有效方法是使用諸如SQL的Query Analyzer的開發工具,而不是在這些語句第一次出現在ASPX頁面上時才測試。