Database Engine 可程式性的增強功能
Microsoft SQL Server 2005 在 Database Engine 中導入了若干改進措施和新功能,提升程式設計人員的能力和生產力。您可以使用 Microsoft .NET Framework 架構語言 (例如 Microsoft Visual C#) 來撰寫資料庫物件。開發和偵錯功能已整合至 Microsoft Visual Studio 環境中,可讓開發人員使用他們用來開發 .NET Framework 架構元件和服務的相同工具來開發資料庫物件。Transact-SQL 語言已擴充為具有改進的錯誤處理和遞迴查詢之支援等功能。
此外,應用程式用來存取 Database Engine 執行個體的資料存取介面也已增強,來提升程式設計人員的生產力。如需詳細資訊,請參閱<資料存取介面的增強功能>。
以下列出 Transact-SQL 語言的主要增強功能。如需有關新 Transact-SQL 功能的詳細資訊,請參閱<Transact-SQL 新功能和增強功能 (Transact-SQL)>。
可程式性的增強功能
Microsoft .NET Framework:Common Language Runtime 整合
Microsoft .NET Framework Common Language Runtime (CLR) 現在已主控於 SQL Server Database Engine。這個 CLR 整合環境支援程序資料庫物件,包括函數、預存程序和觸發程序,而這些物件都是以 .NET Framework 架構語言所撰寫,例如 Microsoft Visual C# 和 Visual Basic .NET。.NET Framework 架構語言支援 Transact-SQL 語言所沒有的邏輯和功能,這表示現在可以在資料庫物件中納入更複雜的邏輯。使用者自訂類型和彙總也可以用 .NET Framework 架構語言來撰寫,以建立比舊版 SQL Server 更複雜的資料類型。
CLR 整合程式設計環境已整合到 Visual Studio 開發環境中。開發人員使用他們用來開發用戶端或中介層 .NET 元件和服務的相同工具來開發和偵錯資料庫物件。
如需詳細資訊,請參閱<Introduction to Common Language Runtime (CLR) Integration>。
Microsoft .NET Framework:使用者自訂彙總
以 .NET Framework 架構語言所撰寫的使用者自訂彙總函數擴充了 Transact-SQL 所包含的基本彙總函數,例如 SUM、MIN 和 MAX。彙總函數是處理若干資料值並傳回單一值的函數。.NET Framework 彙總函數並不會擷取整個結果集給應用程式及在應用程式中執行複雜的彙總邏輯,而是在 Database Engine 的執行個體中執行邏輯,並只傳回最後值給應用程式。
如需詳細資訊,請參閱<CLR User-Defined Aggregates>。
Microsoft .NET Framework:使用者自訂類型
CLR 使用者自訂類型 (UDT) 可讓您以 .NET Framework CLR 所支援的任何語言來實作資料庫資料類型。CLR 使用者自訂類型在 .NET Framework 架構語言中是以類別來實作,而且可具有由類別之欄位、方法和屬性所定義的複雜結構與行為。CLR 使用者自訂類型與 Database Engine 類型系統整合,可用於所有使用內建類型的內容中。
如需詳細資訊,請參閱<CLR User-Defined Types>。
Microsoft .NET Framework:預存程序、觸發程序和使用者自訂函數
資料庫程序物件可以用 .NET Framework 架構語言撰寫,以納入比 Transact-SQL 語言所能支援之更複雜的邏輯。程式設計人員會使用與他們用來開發 .NET Framework 元件和服務相同的語言以及開發環境來開發物件。
如需詳細資訊,請參閱<CLR Stored Procedures>、<CLR Triggers>和<CLR User-Defined Functions>。
Web 存取:原生 HTTP SOAP 存取
Database Engine 的執行個體可以用 HTTP 端點或位址來設定,SOAP 要求可以從應用程式傳送至該處。Database Engine 的執行個體直接接收封包,而不需要設定任何中介層服務,例如 Microsoft Internet Information Services (IIS) 伺服器。
如需詳細資訊,請參閱<在 SQL Server 2005 使用原生 XML Web Service>。
Transact-SQL 增強功能:新的 XML 資料類型
Database Engine 導入新的 xml 資料類型,支援將 XML 文件和片段儲存在資料庫中。XML 執行個體可儲存在使用 xml 類型建立的資料行、預存程序參數或變數中。
如需詳細資訊,請參閱<XML 資料類型>。
Transact-SQL 增強功能:FOR XML 增強功能
您可以建立巢狀 FOR XML 陳述式,來建立 XML 文件階層。FOR XML 陳述式的結果可以儲存在利用新 xml 資料類型建立的資料行、預存程序參數或變數中。
如需詳細資訊,請參閱<新的 FOR XML 功能>。
Transact-SQL 增強功能:改進的錯誤處理
撰寫 Transact-SQL 批次、預存程序、觸發程序和使用者自訂函數之程式碼的程式設計人員,可以使用類似的 TRY-CATCH 邏輯來設陷及處理錯誤狀況。
如需詳細資訊,請參閱<處理 Database Engine 錯誤>。
Transact-SQL 增強功能:新的中繼資料檢視
SQL Server 2005 Database Engine 導入兩組可用來查詢中繼資料的新檢視。系統目錄檢視提供關於定義在 SQL Server 資料庫之物件的資訊,例如資料表、預存程序和條件約束。動態管理檢視提供關於 Database Engine 執行個體之現行狀態的資訊。動態管理檢視顯示未保存至磁碟之記憶體結構的資訊,例如關於鎖定、執行緒和工作的資訊。
如需詳細資訊,請參閱<查詢 SQL Server 系統目錄>。
Transact-SQL 增強功能:次序函數
Database Engine 導入一個新的函數類別目錄,稱為次序函數。構成這個類別目錄的函數如下:
- RANK
- DENSE_RANK
- NTILE
- ROW_NUMBER
這些函數為資料分割中的每一資料列傳回一個次序值。
如需有關這些函數之清單的詳細資訊,請參閱<次序函數 (Transact-SQL)>。
Transact-SQL 增強功能:資料定義語言 (DDL) 觸發程序
除了支援可修改資料的資料操作語言陳述式 (INSERT、UPDATE 和 DELETE) 所引發的觸發程序之外,Database Engine 還包括一個新的觸發程序類別,由修改資料庫物件的 DDL 陳述式引發,例如,以 CREATE、ALTER 或 DROP 開頭的陳述式。DDL 觸發程序可用來稽核或管理資料庫結構描述的變更。
如需詳細資訊,請參閱<DDL 觸發程序>。
Transact-SQL 增強功能:事件通知
事件通知是一種新的物件,可以在 Database Engine 中以程式碼方式撰寫出來。事件通知傳送關於 Transact-SQL DDL 陳述式和 SQL 追蹤事件的資訊到 Service Broker 服務。事件通知可用來記錄及檢閱資料庫所發生的變更或活動。它們非同步執行,並且可提供 DML 觸發程序、DDL 觸發程序和 SQL 追蹤的程式設計替代方案。
如需詳細資訊,請參閱<實作事件通知>。
Transact-SQL 增強功能:佇列處理延伸模組
有三個 Transact-SQL 增強功能,使得在結構鬆散、可靠的網際網路規模和商務處理自動化系統中建立訊息佇列應用程式的作業更加簡化。現在 INSERT、UPDATE 和 DELETE 支援 OUTPUT 子句,它們依據陳述式所修改的資料列傳回資料。現在可在 UPDATE 和 DELETE 陳述式中指定 READPAST,讓這些陳述式略過其他工作所保留的佇列資料列,而從佇列中挑選下一個可用的資料列。
如需詳細資訊,請參閱<OUTPUT 子句 (Transact-SQL)>和<鎖定提示>。
Transact-SQL 增強功能:統一大型物件程式設計模型
在舊版的 SQL Server 中,超過 8,000 個位元組的大型字串必須儲存成 text、ntext 和 image 資料類型,它們與較短字串的資料類型 (char、nchar、varchar、nvarchar、binary 和 varbinary) 有不同的程式設計模型。現在,Database Engine 支援較短資料類型的 MAX 長度規格。指定好 MAX 之後,資料類型可儲存與 text、ntext 和 image 值相同大小的字串,最多為 2 GB,但其處理方式與它們儲存較短字串的方式一樣。
如需詳細資訊,請參閱<使用大數值資料類型>。
Transact-SQL 增強功能:遞迴查詢
一般資料表運算式 (CTE) 是在執行 SELECT、INSERT、UPDATE 或 DELETE 陳述式期間暫時儲存的結果集。使用 CTE 時可使用遞迴查詢,並可取代暫存資料表或檢視的使用來簡化邏輯。
如需詳細資訊,請參閱<使用一般資料表運算式>。
Transact-SQL 增強功能:新的 APPLY 運算子
APPLY 運算子支援對外部資料表參考所傳回的每一個資料列叫用資料表值運算式 (資料表值函數或子查詢)。針對外部資料表參考中的每一資料列評估資料表值運算式。
如需詳細資訊,請參閱<使用 APPLY>。
Transact-SQL 增強功能:新的 PIVOT 和 UNPIVOT 運算子
新的 PIVOT 和 UNPIVOT 運算子旋轉結果集,使資料行變成資料列,資料列變成資料行。這稱為旋轉資料或建立交叉分析報表。這些作業在舊版的 SQL Server 是可行的,但需要複雜的邏輯,而現在這些邏輯已使用 PIVOT 和 UNPIVOT 簡化了。
如需詳細資訊,請參閱<使用 PIVOT 和 UNPIVOT>。
Transact-SQL 增強功能:查詢通知
查詢通知可讓應用程式快取結果集,並在另一個應用程式修改基礎資料時,要求 Database Engine 通知它。使用查詢通知的應用程式不必定期驗證資料庫中的資料狀態。唯有當 Database Engine 通知它們有所變更時,才需要驗證資料。
如需詳細資訊,請參閱<使用查詢通知>。
Transact-SQL 增強功能:OPENROWSET 的大量作業
OPENROWSET 現在支援從資料檔大量複製資料的 BULK 作業。OPENROWSET 大量作業是使用新資料表提示和大量選項來控制,例如 BULK_BATCHSIZE 和 FORMATFILE。新的 bulk_column_alias 子句支援將資料行名稱指定至大量作業資料。
如需詳細資訊,請參閱<OPENROWSET (Transact-SQL)>和<資料表提示 (Transact-SQL)>。
Transact-SQL 增強功能:TOP 增強功能
TOP 運算子已增強為可以接受任何數值運算式 (例如變數名稱) 而不是只接受整數,來指定運算子傳回的資料列數。TOP 現在也可以指定 INSERT、UPDATE 和 DELETE 陳述式中。
如需詳細資訊,請參閱<TOP (Transact-SQL)>。
Transact-SQL 增強功能:分散式查詢
EXECUTE 陳述式現在支援 AT LinkedServer 子句,來指定在連結伺服器上執行預存程序。CONTAINS 全文檢索述詞支援四部分名稱,來對連結的伺服器執行查詢。分散式查詢也支援新的大型物件資料類型 nvarchar(max)、varchar(max) 和 varbinary(max)。現在有加入新的 SQL 追蹤事件,來幫助分析分散式查詢和 OLE DB 提供者的互動。
如需詳細資訊,請參閱<EXECUTE (Transact-SQL)>、<CONTAINS (Transact-SQL)>、<資料類型對應和分散式查詢>和<OLEDB 事件類別目錄>。
Transact-SQL 增強功能:TABLESAMPLE
新的 TABLESAMPLE 子句限制查詢處理的資料列數。與只傳回結果集前幾個資料列的 TOP 不同,TABLESAMPLE 會傳回從查詢所處理的資料列集中選取的資料列。
如需詳細資訊,請參閱<使用 TABLESAMPLE 限制結果集>。
Transact-SQL 增強功能:新的 CASCADE 完整性條件約束
REFERENCES 子句現在支援 SET NULL 和 SET DEFAULT 串聯式參考整合性動作。SET NULL 指定串聯式參考完整性動作將外部索引鍵設為 NULL。SET DEFAULT 指定外部索引鍵是設為資料行已定義的預設值。
如需詳細資訊,請參閱<串聯式參考完整性的條件約束>。
Transact-SQL 增強功能:溢位資料可超出頁面大小
如果資料列包含使用 nvarchar、varchar、varbinary 和 sql_variant 資料類型的可變長度資料行,它們就可超出 8,060 位元組的限制。如果這些可變長度資料行的合併寬度造成資料列超出頁面大小限制,則 Database Engine 可將可變長度資料行的資料移到個別頁面。
如需詳細資訊,請參閱<超過 8 KB 的資料列溢位資料>。
資料庫管理程式設計:新的 SQL Server 管理物件 (SMO) API
SMO 物件模型延伸並取代 Distributed Management Objects (DMO) 物件模型。SMO 物件模型提供設定及管理 Database Engine 執行個體的類別。Replication Management Objects (RMO) 物件模型補充 SMO 物件模型,提供設定及管理複寫的類別。
如需詳細資訊,請參閱<SQL Server Management Objects (SMO)>。
資料庫管理程式設計:新的 SQL Server WMI 提供者
電腦管理的 WMI 提供者是執行個體提供者。這一層的用途在於提供統一的方式來連結 API 呼叫,以管理伺服器和用戶端網路公用程式功能所要求之登錄作業,以及在電腦管理員嵌入式管理單元元件的已選取 SQL 服務上提供增強的控制和操作功能。
如需詳細資訊,請參閱<WMI Provider for Configuration Management>。
伺服器事件的 WMI 提供者可讓您使用 Windows Management Instrumentation (WMI) 在 SQL Server 中監視事件。提供者的運作方式是將 SQL Server 轉換成 Managed WMI 物件。使用這個提供者的 WMI 可利用在 SQL Server 中產生事件通知的任何事件。另外,因為 SQL Server Agent 是與 WMI 互動的管理應用程式,所以它可回應這些事件,方法是增加 SQL Server Agent 在舊版本上所涵蓋的事件範圍。
如需詳細資訊,請參閱<WMI Provider for Server Events>。