可程式性增強功能 (Database Engine)
[!附註]
就 SQL Server 2008 R2 而言,本主題中列出的內容沒有變更。
Database Engine 中的可程式性增強功能包括新的資料儲存功能、新的資料類型、新的全文檢索搜尋架構,以及一些 Transact-SQL 的改進功能和新增項目。
資料儲存
壓縮的資料表和索引儲存
SQL Server 2008 支援針對資料表、索引和索引檢視表,以資料列和頁面格式進行磁碟內存儲存壓縮。您可以針對每個資料分割個別設定資料分割資料表和索引的壓縮。如需詳細資訊,請參閱<建立壓縮資料表及索引>。
FILESTREAM 儲存體
FILESTREAM 儲存體可讓 SQL Server 應用程式在檔案系統上儲存非結構化的資料,例如文件和影像。這項功能可讓用戶端應用程式使用檔案系統的豐富資料流 API 和效能,同時維護非結構化資料與對應結構化資料之間的交易一致性。如需詳細資訊,請參閱<設計和實作 FILESTREAM 儲存體>。
新的定序
SQL Server 2008 會導入與 Windows Server 2008 所提供之定序完全一致的新定序。這 80 個新定序是由 *_100 版本參考所表示。這些定序會將最新且語言正確的文化排序慣例提供給使用者。如需詳細資訊,請參閱<定序和 Unicode 支援>和<使用定序>。
資料分割資料表和索引的資料分割切換
分割資料可讓您快速和有效率地管理和存取資料子集,同時又可維護整個資料集合的完整性。您現在可以使用資料分割切換,在資料表之間切換資料分割,藉以快速且有效率地傳送資料子集。
如需有關資料分割切換概念的詳細資訊,以及查看實作資料分割切換的範例程式碼,請參閱<使用資料分割切換有效傳送資料>和<在定義索引檢視時進行資料分割切換.>。
疏鬆資料行和資料行集
疏鬆資料行是指具有 Null 值之最佳化儲存格式的一般資料行。當資料行中至少 20% 到 40% 的值將會是 NULL 時,請考慮使用疏鬆資料行。如需詳細資訊,請參閱<使用疏鬆資料行>。
使用疏鬆資料行的資料表可以指定資料行集,以傳回資料表中的所有疏鬆資料行。資料行集是不具類型的 XML 表示,可將資料表的所有疏鬆資料行結合到結構化輸出中。如需詳細資訊,請參閱<使用資料行集>。
空間資料儲存、方法和索引
空間資料代表有關幾何物件之實體位置與形狀的資訊。這些物件可以是點位置或更為複雜的物件,例如鄉村、道路或湖泊。
如需詳細資訊,請參閱<使用空間資料 (Database Engine)>、<geometry 資料類型方法參考>和<geography 資料類型方法參考>。
空間索引可提升空間物件 (「空間資料」(Spatial Data)) 上某些集合導向作業的效率。空間索引會減少需要套用相當耗成本之空間作業的物件數目。如需詳細資訊,請參閱<使用空間索引 (Database Engine)>。
寬型資料表
寬型資料表是指包含一或多個資料行集的資料表。一份寬型資料表最多可以包含 30000 個資料行、1000 個索引和 30000 個統計資料。如需詳細資訊,請參閱<特殊的資料表類型>。
資料類型
日期和時間資料類型
SQL Server 2008 會導入四個新的日期和時間資料類型。這些類型可讓應用程式針對日期或時間、增加的年份範圍、增加的小數秒數有效位數和時區時差支援設有不同的類型。如需詳細資訊,請參閱<使用日期和時間資料>。
hierarchyid 資料類型
SQL Server 2008 會導入新的系統提供資料類型,可封裝階層式關聯性。您可以使用 hierarchyid 做為資料類型來建立具有階層式結構的資料表,或參考另一個位置的階層式資料結構。此外,您可以使用階層式方法,透過 Transact-SQL 來查詢和執行具有階層式資料的工作。
hierarchyid 類型讓階層式資料儲存與查詢更方便的範例包括:
組織結構
檔案系統
專案中的一組工作
語言詞彙的分類表
網頁之間的連結圖形
相關的 SqlHierarchyId CLR 資料類型可供用戶端應用程式使用。如需詳細資訊,請參閱<使用 hierarchyid 資料類型 (Database Engine)>。
空間資料類型
SQL Server 2008 會導入兩種空間資料類型:geometry 和 geography。geometry 資料類型支援平面或 Euclidean (扁平表面) 資料。geography 資料類型會儲存橢圓體 (圓形表面) 資料,例如 GPS 經緯度座標。這些新的資料類型都支援儲存和操作空間資料物件,例如線條、點和多邊形。如需詳細資訊,請參閱<使用空間資料 (Database Engine)>。
使用者定義資料表類型
Database Engine 會導入新的使用者定義資料表類型,支援將所使用的資料表結構表示成預存程序和函數中的參數,或是表示成批次或預存程序或函數主體中的參數。您可以針對使用者定義資料表類型建立唯一的條件約束和主索引鍵。
如需詳細資訊,請參閱<使用者定義資料表類型>。
使用者定義型別 (UDT)
UDT 的大小上限已經增加至 2147483647 個位元組。
全文檢索搜尋
SQL Server 2008 Enterprise 全文檢索搜尋會導入新的全文檢索架構。全文檢索搜尋現在是完全整合的資料庫功能。因此,在下列領域中,已經大幅強化全文檢索搜尋:
全文檢索目錄已整合至資料庫中,而非儲存在檔案系統中,所以現在移動資料庫就會自動移動全文檢索目錄。
SQL Server 2005 非搜尋字已經由停用字詞所取代。停用字詞的組態是由一組新的停用字詞表物件所管理。這些物件與資料庫相關聯,而且它們會與資料庫一起移動。在進行管理作業 (例如備份和還原、卸離和附加,以及使用複製資料庫精靈來複製資料庫) 期間,這點會讓停用字詞組態維持不變。如需詳細資訊,請參閱<停止字詞和停止清單>。
由於與其他重要查詢元件 (例如查詢最佳化工具) 整合,所以在某些特定狀況中,已經大幅改善查詢和索引效能。如需詳細資訊,請參閱<全文檢索索引的效能微調與最佳化>。
新的工具可協助您了解全文檢索索引的原始內容,以及特定斷詞工具在給定查詢詞彙或片語中的行為。如需詳細資訊,請參閱<sys.dm_fts_index_keywords (Transact-SQL)>、<sys.dm_fts_index_keywords_by_document (Transact-SQL)>和<sys.dm_fts_parser (Transact-SQL)>。這些和其他新的動態管理檢視與預存程序有助於疑難排解全文檢索搜尋的問題。如需有關這些疑難排解資源的詳細資訊,請參閱<全文檢索搜尋疑難排解>。
全新系列的斷詞工具改善了斷詞精確度並且擴充了全文檢索搜尋可用的語言集。如需詳細資訊,請參閱<斷詞工具與字幹分析器>。
如需詳細資訊,請參閱<SQL Server 2008 R2 全文檢索搜尋的行為變更>、<SQL Server 2008 R2 中已被取代的全文檢索搜尋功能>、<SQL Server 2008 R2 全文檢索搜尋的突破性變更>和<全文檢索搜尋架構>。
Transact-SQL
相容性層級
ALTER DATABASE SET COMPATIBILITY_LEVEL 取代了設定資料庫相容性層級的 sp_dbcmptlevel。如需詳細資訊,請參閱<ALTER DATABASE 相容性層級 (Transact-SQL)>。
複合運算子
目前提供了執行作業並將變數設定為結果 (例如 SET @x += 2) 的運算子。如需詳細資訊,請參閱<複合運算子 (Transact-SQL)>。
CONVERT 函數
CONVERT 函數已強化成允許在二進位與字元十六進位值之間進行轉換。如需詳細資訊,請參閱<CAST 和 CONVERT (Transact-SQL)>。
日期和時間功能
SQL Server 2008 包含 ISO 週-日期系統的支援。如需詳細資訊,請參閱<DATEPART (Transact-SQL)>。
GROUPING SETS
GROUPING SETS、ROLLUP 和 CUBE 運算子已加入至 GROUP BY 子句。新的函數 GROUPING_ID() 會比現有的 GROUPING() 函數傳回更多群組層級資訊。不符合 ISO 標準的 WITH ROLLUP、WITH CUBE 和 ALL 語法已被取代。如需詳細資訊,請參閱<搭配 ROLLUP、CUBE 和 GROUPING SETS 使用 GROUP BY>。
MERGE 陳述式
這個新的 Transact-SQL 陳述式會根據與來源資料表聯結的結果,針對目標資料表執行 INSERT、UPDATE 或 DELETE 作業。此語法可讓您將資料來源與目標資料表或檢視表進行聯結,然後根據聯結結果,執行許多動作。如需詳細資訊,請參閱<MERGE (Transact-SQL)>。
SQL 相依性報告
SQL Server 2008 會導入新的目錄檢視和系統函數來提供一致且可靠的 SQL 相依性報告。您可以使用 sys.sql_expression_dependencies、sys.dm_sql_referencing_entities 和 sys.dm_sql_referenced_entities 針對結構描述繫結和非結構描述繫結物件報告跨伺服器、跨資料庫和資料庫 SQL 相依性。如需詳細資訊,請參閱<報告 SQL 相依性>。
資料表值參數
Database Engine 會導入可參考使用者定義資料表類型的全新參數類型。資料表值參數可以將多個資料列傳送至 SQL Server 陳述式或常式 (例如預存程序或函數),而不需要建立暫存資料表。如需詳細資訊,請參閱<資料表值參數 (Database Engine)>。
Transact-SQL 資料列建構函式
Transact-SQL 已強化成允許在單一 INSERT 陳述式內部使用多個值插入。如需詳細資訊,請參閱<INSERT (Transact-SQL)>。