1

1. Microsoft SQL Server 2000 概觀

SQL Server 系統

SQL Server 2000 的特性和新功能

本章總結

Microsoft SQL Server 2000 是一種關聯式資料庫（RDBMS）。此種資料庫採資料分類表格化的架構，將相關的資料組成表格，表格和表格之間可以有關聯性，因此稱為關聯式資料庫。系統管理員可透過應用程式進入伺服器，更改資料型態，管理及處理伺服器資源。SQL Server 也是一種具備延展性的資料庫（scalable database），亦即 SQL Server 可以支援多位使用者同時進入資料庫中處理大量的資料。

SQL Server 於 1989 年推出後即不斷改善產品的延展性、完整性及簡化管理模式。在這一章，我們將介紹 SQL Server 的兩種使用環境，也會介紹 SQL Sever 2000 的特性與新功能。

SQL Server系統

SQL Server 系統可以安裝在主/從式架構的作業系統平台上，或是獨立的伺服器主機。至於要安裝在哪一種系統上，則先要評估有多少使用者會同時在資料庫中作業，以及利用資料庫進行哪種工作。在這一節我們會檢視這兩種架設系統。

主從式系統

主從系統分為兩層式及三層式架構。SQL Server 軟體和資料庫不論是安裝在哪一種架構下，都放在稱作資料庫伺服器的中央電腦端，而讓使用者在自己的電腦上執行用戶端。兩個架構的不同處在於使用者是透過用戶端上的應用程式進入資料庫伺服器（兩層式架構），還是透過稱為應用伺服器上的應用程式進入資料庫伺服器（三層式架構）。

說得更具體些，在兩層式的架構下，每一個用戶端都可以透過網路連線直接進入資料庫伺服器，所以用戶端要執行商業邏輯及可以使結果顯示的程式碼。因為這種架構下的用戶端可以執行這兩種程式，所以稱為「Thick Client」。圖1-1為兩層式架構的簡圖。由於這樣的連線方式會使每一個連線者都佔用系統資源（如記憶體或資源鎖定），因此在用戶端連線的使用者不多時尚可適用。當連線使用者人數增多時，則可考慮採用三層式架構。

圖1-1　兩層式主/從架AAA構系統

如之前所提到的，三層式架構比兩層式多了一稱為應用伺服器的電腦。透過應用伺服器執行程式碼，顯示結果。這種架構下的用戶端稱為「Thin Client」。應用程式端的應用程式通常執行商業邏輯；且此處之應用程式可為多重執行緒，意思是說這個應用程式可以容許被多個使用者同時存取。應用伺服器可透過與資料庫伺服器連結，存取資料並顯示執行結果給用戶端，如圖1-2所示。

三層式架構的優點是避免每一個用戶都直接連線到伺服器資料庫，而佔用伺服器資源。這種連線架構的概念叫做 連線集區 （connection pooling），連線集區就是讓用戶端把需求丟入（正確來講應該是「佇列於」）一個共同的區域，等待連線。當一個連線結束了，下一個用戶端又可以連上來。就觀念上來說，連線集區可讓您配置集區內的流量，藉以調節伺服器的工作量（流量可透過軟體來配置），避免多人連線而降低系統效能。您可以利用 Microsoft IIS 或 Microsoft Windows 2000 內建的 COM+ 元件達到連線集區。至於架設的細節則不在本書討論範圍內。

有些企業的系統和網站需要用到一個以上的伺服器處理資料。SQL Server 2000提供的分割資料表功能可以橫跨多台伺服器，降低每台伺服器的負荷量。其細節可參考本書

〈分散式分割檢視表〉 這一章。

圖1-2　三層式主/從伺服器系統

桌上型系統

SQL Server 也可以是在桌上型或筆記型電腦上獨立執行的資料庫，故稱桌上型系統。同一台電腦可以同時包含執行應用程式和 SQL Server 的資料庫。因為在這個系統架構下只需要一台電腦即可，所以不需考慮遠端連線；用戶端只需在自己的電腦上連線到自己電腦上的 SQL Sever 即可。

桌上型系統適用於單一使用者存取資料庫資料，或是人數較少的使用者共享一台電腦但不在同一時間進入資料庫存取資料。舉例來說，一個小型商店可能只有一台電腦，當數名員工需要同時存取客戶資料或銷售資料時，他們就要輪流使用這台電腦作資料存取。桌上型系統就很適合這類資料與資料庫的規模都不大的小型店家。

SQL Server 2000 的特性和新功能

SQL Server 2000 有許多新增的特色與功能，我們無法在這裡一一詳述，但是我們會在這裡稍微介紹幾項較值得注意的部分。這些功能讓 SQL Server 2000 易於管理及使用方便，強化了舊版的功能，使其適用於各種規模的線上交易處理，如資料倉儲、電子商務運用程式。在本節中我們除了描述 SQL Server 2000 新增的功能，也會告訴您在哪裡可以找到相關的資料。

新增功能

本節會告訴您關於伺服端部分的特點和新增功能。更詳細的資料可以在後面的章節找到。

支援延伸記憶體

SQL Server 2000 企業版可以利用 Windows 2000 Address Windowing Extensions （AWE）API 來支援大容量記憶空間的定址。SQL Server 現在可以在 Windows 2000 Advanced Server 上支援8GB的記憶體，或是在Windows 2000 Datacenter Server上支援到將近64 GB的記憶體。除了這兩個版本的作業系統，例如 Windows 2000 Professional 與 Windows 2000 Server 就沒有支援 AWE 的功能。一些新的 SQL Server 參數（例如awe enable），可以讓 SQL Server 使用 AWE。

相關資訊

查閱線上叢書中的 awe enabled Option可以得到更多細節。

SQL Server多重執行個體

利用 SQL Server 2000，您可以在一部電腦上執行數個 SQL Server 的執行個體。每個執行個體擁有它自己的系統與使用者資料庫。應用程式連接單一電腦上的執行個體，其方法與連接不同電腦上的執行個體並沒有什麼不同。您可以利用 SQL Server 的安裝光碟來產生執行個體。一個 SQL Server 6.5 或 7.0 的執行個體可以與 SQL Server 2000 的多重執行個體建立關聯性，但是 SQL Server 6.5 與 7.0 的執行個體不能同時存在。

您可以利用執行個體來將應用程式群組化，因此應用程式可以被指定在某個特定的執行個體上執行。如此可以降低衝突－因為每個執行個體的資料庫在執行一些日常工作（如資料備份、完成作業、建立索引、統計更新或重建索引等等）時都是獨立運作的。

分散式分割檢視表

分散式分割檢視表是 SQL Server 2000 一項值得注意的新功能。有些網站或資料庫系統常需要許多個高階伺服器來應付龐大的傳輸量，對這類網站或資料庫而言，這項功能相當重要。您可以跨越這些執行 SQL Server 的機器去建立水平分割，並且包括所有伺服器成員的檢視表。它在每部伺服器上都有相同的外觀，使得所有伺服器的分割表看起來都是整體的而非個別的。應用程式可以引用這份檢視表而不需知道資料位於哪部伺服器。

相關資訊

在線上叢書中 建立分割檢視表 這一章節裡，可以找到更多與分割檢視表有關的細節與指南。

容錯移轉叢集

容錯移轉叢集(failover-clustering)管理功能在 SQL Server 2000 有了很大的改進。容錯移轉功能的設定在過去必須要靠容錯移轉叢集精靈，但它現在已是屬於 SQL Server 安裝過程的一部份。比起過去的版本，容錯移轉叢集在 SQL Server 2000 中更易於安裝、設定以及管理。底下列出許多您可以應用於管理工作的新功能。

- 可以從叢集中的任何一個節點進行容錯移轉叢集的管理
- 當容錯移轉狀況發生時，允許叢集中的任何一個節點跳入容錯移轉叢集
- 當叢集中的虛擬伺服器重置或重建時，不影響虛擬叢集裡的其他節點
- 可對虛擬伺服器指定多重IP位址
- 利用 SQL Server 的安裝程式即可在容錯移轉叢集中增加或移除節點
- 可將叢集中的任一節點指定為容錯移轉或容錯回復節點，亦可對任一節點指定其容錯移轉或容錯回復狀況產生時應跳入哪個節點

相關資訊

若想了解更多有關 Microsoft Cluster Services 的操作，請參考

第12章 。在 第12章 裡，您可以學習到什麼是叢集，以及如何在 SQL Server 裡使用及規劃叢集。

支援XML

延伸標記語言 （XML）是 W3C 協會制定義的新標準，主要是用來定義結構化文件物件中資訊的表現方式，以便在不同的系統之間傳送資料。SQL Server 2000 支援 XML。基本上，您可以利用 XML 經由某個 URL 透過 HTTP 通訊協定來存取SQL Server 2000。SQL Server 2000 對 XML 的支援如下：

- FOR XML 子句讓您可以利用 SELECT 陳述式建立一份XML文件來代替資料庫以欄位為主的標準外觀
- 新的系統預存程序可幫助您管理XML資料
- XML Update-gram 允許您在資料庫中插入、修改及刪除資料
- 您可以利用 HTTP 通訊協定透過 URL 直接執行查詢或系統預存程序等工作
- 您可以透過 URL 以範本或檔案方式執行多個 SQL 陳述式
- OLE DB Provider接受 XML 文件形成的指令碼並可以串流方式輸出執行結果

  在 第23章 中有更多利用 XML 存取 SQL Server 的相關訊息。在這一章裡，您也可以學到一些網際網路程式設計的觀念。

  資料庫維護作業

  SQL Server 2000 在資料庫維護作業上做了極大幅度的增強與改進。這些增進的部份包括更快速的差異式備份、平行式 DBCC 以及使用 DBCC 的平行掃瞄。差異式備份即為最後一次資料庫完整備份後所有變化的備份資料。DBCC 現在可以利用多重 CPU 系統的優點，以多重 CPU 來進行平行處理，如此可大幅增加 DBCC 的速度。此外 DBCC 在掃瞄資料表時不再需要鎖定資料表，如此一來，即使 DBCC 在運作時我們依然可以對資料表進行更新的工作。

  參考完整性

  當您修改某個被外部索引鍵（foreign key，FK）引用的資料行時，有兩個新的子句可以讓您指定 SQL Server 的動作。這兩個子句為 ON UPDATE 與 ON DELETE，它們可以使用於 CREATE TABLE 以及 ALTER TABLE 陳述式中，這兩個子句的選擇性選項為 CASCADING（串聯）或 NO ACTION（不動作）。當 ON DELETE 選項為 CASCADING 時，如果您刪除了被引用（父系）資料表中的資料行，則外部索引鍵資料表將因串聯的緣故而使其相關資料行被同步刪除。ON UPDATE 的選項為 CASCADING 時情況也是一樣的。意即當您更新父系資料表的資料行時將串聯至外部索引鍵資料表而使相關其資料行同時更新。如果 ON DELETE 與 ON UPDATE 的選項為 NO ACTION，則在父系資料表的資料行遭刪除或資料行更新時，SQL Server 會傳回一個錯誤訊息並且回復這類動作。

  相關資訊

  線上叢書裡可以查閱CREATE TABLE與ALTER TABLE的相關語法與這些規則的更多細節。

  全文檢索

  SQL Server 2000 在全文檢索上提供了兩個強大的新功能：變更追蹤（change tracking）與影像篩選（image filtering）。當全文檢索的索引更新時，變更追蹤能將其變更記錄下來。您可以在週期性的更新索引時手動清除這些記錄檔，或是將其設定為自動選項。影像篩選功能可讓您在針對一些儲存於影像資料行的文件進行編製索引或查詢時，將其中圖形資料的文字部份解析出來。

  相關資訊

  關於全文檢索的相關資訊，請參考線上叢書中 全文檢索 這一章節。

  新的資料型別

  SQL Server 2000 包含了三種新的資料型別，可以提供程式設計工作上無比的彈性。新的資料型別如下：

- bigint　8-byte長度的整數型別（最大的整數資料型別）。
- sql_variant　可以用來儲存多種不同資料型別的資料型別。
- table　此種資料型別允許應用程式儲存資料表類型的資料型別。

  SQL Server 可以應用的資料型別相當多樣，在 第10章的〈使用系統資料型別〉 這一節裡有更多關於這些資料型別的細節。

  新增的索引功能

  索引編製工作的提升是 SQL Server 2000 的一大特色。底下所列的新增功能可以讓編製索引的工作更具彈性：

- 運算資料行可編製索引
- 可指定索引編製的排序方式為升?或降冪
- 可指定哪些索引是以平行掃瞄及排序的方式來編製

  這些新功能的資訊，可以參考線上叢書中關於 資料表索引 及 建立索引平行作業 等部份。在本書的 第17章 ，則可查閱到更多關於索引的一般資訊。

  管理新增功能

  SQL Server 2000 中有不少新增功能是用來幫助您管理 SQL Server ，而這些新功能可以讓您的工作變得較為輕鬆。

  記錄傳送

  記錄傳送功能讓您可以時常地從來源伺服器中拷貝交易記錄檔，並轉存到一至數個目的伺服器裡，並且自動地將交易記錄檔載入。如此一來，您便擁有一個可隨時上線的資料庫備份以及個別的唯讀系統，而個別的唯讀系統依然可以執行查詢工作，例如列印報表等等。您可以設定每個步驟的時間表，包括備份與載入之間的延遲都可考慮在內。

  相關資訊

  在線上叢書的 記錄傳送 中可以看到更多關於這個主題的資訊。

  SQL Server Profiler

  SQL Server Profiler 提供了兩個新方法讓您可以對追蹤工作加以限制：根據追蹤檔案的大小或根據追蹤檔案的時間。您也可以追蹤數個新事件。開啟Profiler並產生或編輯一個追蹤檔案，按一下 事件 標籤頁，在 可用的事件類別 之下展開 資料庫 這個新標題，可以發現四個新事件： Data File Auto Grow、Data File Auto Shrink、Log File Auto Grow 以及 Log File Auto Shrink 。展開 效能 標題也可以發現三個新事件： Show Plan Statistics、Show Plan All以及 Show Plan Text 。參閱本書的 第35章 ，有更多關於使用Profiler的資訊。

  SQL Server Query Analyzer

  SQL Server Query Analyzer 現在內含了一個可以讓您用來檢視資料庫物件的物件瀏覽器。開啟 Query Analyzer，按一下 工具 （ 工具 功能表也是新增的）並且選擇 物件瀏覽器 ，便可以找到這個瀏覽器出現在Query Analyzer視窗的左側。工具功能表的其他選項為 物件搜尋、管理索引 以及 管理統計資料 。 物件搜尋 可以讓您根據物件型態（諸如檢視表、預存程序或使用者資料表）在資料庫中搜尋指定的物件。 管理索引 以及 管理統計資料 則讓您可以利用一個彷彿是Enterprise Manager提供的圖形介面來管理索引與統計資料。此外， 查詢 功能表也多了兩個新選項： 顯示伺服器追蹤 與 顯示用戶端統計資料 。關於使用Query Analyzer的相關資訊，請參考本書的 第35章 。

  新增複寫功能

  SQL Server 2000 新增了一些複寫方法。其中一個是在 立即更新訂閱者 選項中提供的新選擇。這個選項被稱做 佇列更新 。佇列更新是快照式複寫與交易式複選的特定選項。一旦啟用佇列更新，即使發行者並未與訂閱者連線，訂閱者也可以在本機端修改訂閱資料。當發行者與訂閱者重新建立連線時，關於資料修改的這份交易便排入佇列，傳送至發行者，並以非同步的方式執行。迴圈偵查則可避免發生「複本被帶回發源訂閱者」這種交易狀況。

  相關資訊

  請參閱線上叢書的 佇列更新 章節。

  另一個對所有複寫型態所新增的功能，便是支援複寫結構描述變更（replication schema changes）。現在您可以從發行集與訂閱集中增加資料行或卸除資料行，而不需卸除或重製發行集與訂閱集。您也可以在發行集裡包含檢視表、預存程序，以及使用者自訂函數等等結構描述做為發行項。

  合併式複寫也有一些新增的功能如下：

- 新的衝突解決器
- 互動式解決衝突的選項
- 合併式發行集的垂直篩選
- 能對動態篩選條件新增使用者自訂函數
- 資料同步時能有代理發行者

  本書 第28章 裡有更多關於合併式複寫的資訊。

  其他新增功能

  本章中無法詳盡列出所有 SQL Server 2000 的新增功能。在 資料轉換服務、OLAP Services、Meta Data Services 以及 English Query 這些領域裡也有許多改進，但在此處並未描述這些功能的細節。您可以在下列線上叢書裡的主題中找到這些部份的相關資訊：

- 資料轉換服務的強化功能
- Analysis Services的強化功能
- Meta Data Services的強化功能
- English Query的強化功能

  本章總結

  SQL Server 2000 是一個關聯性資料庫管理系統，它提供的許多功能讓您規劃您的系統以切合商務上的需求，無論是小公司、大型企業或電子商務均能適用。在這一章裡，我們描述了 SQL Server 的工作環境，也涵蓋了 SQL Server 2000 的新增功能與特色。這些部份讓您可以更容易管理 SQL Server、提供更多的彈性、更多有用的功能以及更好的效能。本書之後將會教您如何設定 SQL Server、如何建立資料庫與物件、如何操控資料、如何管理及應用SQL Server 2000等等。因此請繼續翻開

  第2章 ，了解一下可以讓 SQL Server 2000 順利執行的作業系統：Microsoft Windows NT 與Microsoft Windows 2000。