Database Engine 中的可程式性增強功能包括 FileTable、統計語意搜尋、屬性範圍全文檢索搜尋和可自訂的鄰近搜尋、特定查詢分頁、空間類型的圓弧線段支援、序列物件的支援、15,000 個資料分割的預設支援,以及一些 Transact-SQL 的改進功能和新增項目。
已移除原生 XML Web Service (SOAP/HTTP 端點)
從 SQL Server 2012 開始,您無法再使用 CREATE ENDPOINT 或 ALTER ENDPOINT 來加入或修改 SOAP/HTTP 端點。
FileTable
FileTable 功能是以 SQL Server FILESTREAM 技術為建置基礎,可將 Windows 檔案命名空間的支援以及與 Windows 應用程式的相容性提供給儲存在 SQL Server 中的檔案資料。 這可讓應用程式整合其儲存體和資料管理元件,並且透過非結構化資料和中繼資料提供整合式 SQL Server 服務 (包括全文檢索搜尋和語意搜尋),以及簡易原則管理和資料管理。
總之,您現在可以將檔案和文件儲存在 SQL Server 的特殊資料表中,而從 Windows 應用程式存取它們,如同它們儲存在檔案系統中,不需要對 Windows 應用程式進行任何變更。
如需有關 FileTable 功能的詳細資訊,請參閱<FileTable (SQL Server)>。
統計語意搜尋
統計語意搜尋會擷取在統計上相關的關鍵片語,然後根據這些片語識別類似文件,藉以深入解析儲存在 SQL Server 資料庫中的非結構化文件。 這些結果會透過三個 Transact-SQL 資料列集函數提供成結構化資料。
雖然語意搜尋是以 SQL Server 中現有的全文檢索搜尋功能為建置基礎,不過可實現超過語法關鍵字搜尋的新案例。 全文檢索搜尋可讓您查詢文件中的字詞,而語意搜尋則可讓您查詢文件的意義。 新的案例包括自動標記擷取、相關內容探索,以及類似內容之間的階層式導覽。 例如,您可以查詢文件相似度索引來識別符合工作描述的履歷表。 或者,您也可以查詢關鍵片語的索引來建置組織或文件主體的分類。
如需詳細資訊,請參閱<語意搜尋 (SQL Server)>。
您必須先安裝、附加和註冊其他資料庫,然後才能使用語意搜尋。 如需詳細資訊,請參閱<安裝及設定語意搜尋>。
全文檢索搜尋
屬性搜尋
從 SQL Server 2012 開始,您就可以設定全文檢索索引來支援 IFilter 所發出之屬性 (例如 Author 和 Title) 的屬性範圍搜尋。 這種搜尋形式稱為「屬性搜尋」(Property Searching)。 能否針對給定的文件類型進行屬性搜尋主要取決於對應的篩選器 (IFilter) 是否會在建立全文檢索索引期間擷取搜尋屬性。 適用於 .docx、.xlsx 和 .pptx 等 Microsoft Office 2007 文件檔案類型的 IFilter 就是會擷取許多文件屬性的 IFilter。 如需詳細資訊,請參閱<使用搜索屬性清單搜索文件屬性>。
可自訂的 NEAR
從 SQL Server 2012 開始,您就可以使用 CONTAINS 述詞或 CONTAINSTABLE 函數的全新自訂 NEAR 選項來自訂鄰近搜尋。 自訂 NEAR 可讓您選擇性地指定非搜尋詞彙的數目上限,以便分隔符合項目中的第一個和最後一個搜尋詞彙。 此外,自訂 NEAR 也可讓您選擇性地指定只有當單字和片語按照您指定的順序出現時,才表示它們相符。如需詳細資訊,請參閱<使用 NEAR 搜尋靠近另一個單字的字詞>。
新的斷詞工具和字幹分析器
這個版本更新了全文檢索搜尋和語意搜尋所使用的所有斷詞工具和字幹分析器 (韓文除外)。 建議您在升級之後重新擴展現有的全文檢索索引,以取得索引內容和查詢結果的一致性。
舊版 SQL Server 隨附之英文的協力廠商斷詞工具已取代為 Microsoft 元件。 如果您必須保留舊版的行為,請參閱<變更用於美式英文與英式英文的斷詞工具>。
舊版 SQL Server 隨附之丹麥文、波蘭文及土耳其文的協力廠商斷詞工具已取代為 Microsoft 元件。 預設會啟用新元件。
目前有捷克文和希臘文的新斷詞工具。 舊版 SQL Server 全文檢索搜尋不支援這兩種語言。
新斷詞工具的行為已經變更。 如需詳細資訊,請參閱<全文檢索搜尋的行為變更>。 如果您必須保留舊版的行為,請參閱<將搜索所使用的斷詞工具還原為舊版>。
這個版本會安裝最新的 Microsoft 斷詞工具和字幹分析器,但是不會安裝最新的 Microsoft 篩選。 若要下載最新的篩選,請參閱 Microsoft Office 2010 篩選套件。
新的和增強的空間功能
SQL Server 2012 中新的空間功能代表了 SQL Server 中空間資料支援進展的一個重要里程碑。 支援完整的全域空間物件和橢圓體上的圓弧是業界在關聯式資料庫系統方面首重的要務。 Geography 資料類型在功能和所支援方法的多樣性方面,已經達到與 geometry 資料類型並駕齊驅的程度。 從空間索引到方法的整體效能已大幅提升。 空間資料支援的種種進展代表 SQL Server 在空間功能上邁進了一大步。
如需這些新空間功能的詳細說明和範例,請下載白皮書:SQL 2012 中的新空間功能。
空間資料類型的增強功能
新圓弧及相關方法
**新子類型。**圓弧有 3 個新的子類型:
CircularString
CompoundCurve
CurvePolygon
**新方法。**所有現有的方法都可處理這些圓形物件。 以下同樣是導入的新方法:
BufferWithCurves() 會使用圓弧建構緩衝處理的物件,與 STBuffer() 相較之下點的數量大幅減少。
STNumCurves() 和 STCurveN() 用於逐一查看圓弧邊緣的清單。
STCurveToLine() 和 CurveToLineWithTolerance() 會使用線段在預設和使用者指定的誤差內模擬圓弧。
Geometry 和 geography 的新方法和更新方法及彙總
新方法。
IsValidDetailed() 傳回訊息,有助於識別空間物件無效的原因。
如果空間物件中至少包含一個 Z 值,則 HasZ 會傳回 1 (true)。
如果空間物件中至少包含一個 M 值,則 HasM 會傳回 1 (true)。
AsBinaryZM() 會將 Z 和 M 值的支援加入 OGC WKB 格式中。
ShortestLineTo() 會傳回 LineString,代表兩個物件之間的最短距離。
STLength() 已更新,現在可同時在有效與無效的 LineString 上運作。
MinDbCompatibilityLevel() 是用於回溯相容性的新方法。 這個方法會指出空間物件是否可由 SQL Server 2008 和 SQL Server 2008 R2 識別。
**新彙總。**這些彙總僅可在 Transact-SQL 中使用,無法在用戶端程式設計程式庫中使用。
UnionAggregate
EnvelopeAggregate
CollectionAggregate
ConvexHullAggregate
有效位數增加。
現在所有結構和關聯都是以 48 位元有效位數完成 (相較於原本在 SQL Server 2008 和 SQL Server 2008 R2 中使用的 27 位元)。 這樣可以減少捨入浮點座標所造成的錯誤。
Geography 類型的增強功能
完整球體。SQL Server 現在支援大於邏輯半球的空間物件。 Geography 功能原本在 SQL Server 2008 中僅限於稍微小於邏輯半球。 在 SQL Server 2012 中,geography 功能現在可與整個球體一樣大。 稱為 FULLGLOBE 的新物件類型可做為作業結果建構或接收。
新方法。
**無效的物件。**Geography 類型現在允許將無效的物件插入資料表中。 STIsValid() 和 MakeValid() 允許偵測無效的 geography 物件,並且以類似 geometry 類型的方式修正。
**環方向。**現在不需考慮環方向,就可以容納 geography 多邊形。 不過這樣可能導致意外的行為。 ReorientObject() 可在建構方向錯誤時,用於重新定向多邊形環。
Geography 類型中加入了 geometry 方法。STWithin()、STContains()、STOverlaps() 和 STConvexHull() 方法原本僅可供 geometry 類型使用,不過現已加入至 geography 類型。 空間索引支援這些新方法,不過不包括 STConvexHull()。
**新的 SRID。**新的空間參考識別碼 (SRID) 104001 已加入支援的空間參考系統清單中。 這個新的 SRID 是地球單位球面 (半徑 1 的球面),可搭配 geography 類型在不需要較為精確的橢圓體數學計算時用來執行最佳化數值運算。
空間效能改進
空間索引改進
**新的自動方格。**新的自動方格空間索引可用於這兩種空間類型 (geometry_auto_grid 和 geography_auto_grid)。 新的自動方格會使用不同的策略在效能與效率之間做出最適當的權衡。 如需詳細資訊,請參閱<CREATE SPATIAL INDEX (Transact-SQL)>。
新的空間索引提示 SPATIAL_WINDOW_MAX_CELLS。 這個新的空間提示是使用空間索引微調查詢效能時的重要方法。 為獲得最佳效能,密集的空間資料往往需要較高的 SPATIAL_WINDOW_MAX_CELLS,而疏鬆的空間資料往往需要較低的 SPATIAL_WINDOW_MAX_CELLS。 這個提示並不保證查詢計畫中將會使用空間索引。 不過,如果使用的話,這個提示將覆寫預設的 WINDOW_MAX_CELLS 參數。
**空間索引的壓縮。**如需詳細資訊,請參閱<CREATE SPATIAL INDEX (Transact-SQL)>。
其他校能改進
使用特定語法時,可使用最佳化最接近查詢計畫。
另外已針對常見的案例最佳化其他幾種方法。
影響所有 CLR UDT 彙總的改進結果,使得空間彙總獲得更佳的效能。
其他空間改進
空間協助程式預存程序
有兩個新的協助程式預存程序可使用。 這兩個程序可用來評估資料表中特定空間資料行的空間資料散發情形。
支援保存的計算資料行
UDT 和空間類型現在可以保存在計算資料行中。
用戶端空間程式設計程式庫的變更
提供新的接收介面 IGeometrySink110 和 IGeographySink110。
Geometry 和 geography 產生器 (SqlGeometryBuilder 和 SqlGeographyBuilder) 現在支援圓弧結構。
新方法 Deserialize 已加入兩種類型 (Deserialize(SqlBytes) 和 Deserialize(SqlBytes)) 中。 這個方法可簡化還原序列化。
中繼資料探索
用於判斷回應格式而不實際執行查詢的 SET FMTONLY 選項已被取代成 sp_describe_first_result_set、sp_describe_undeclared_parameters、sys.dm_exec_describe_first_result_set 和 sys.dm_exec_describe_first_result_set_for_object。
EXECUTE 陳述式
EXECUTE 陳述式現在可以使用 WITH RESULT SETS 引數來指定陳述式所傳回的中繼資料。 如需詳細資訊,請參閱<EXECUTE (Transact-SQL)>。
UTF-16 支援
UTF-16 補充字元 (SC) 定序
全新系列的補充字元 (SC) 定序可搭配 nchar、nvarchar 和 sql_variant 資料類型使用。 例如:Latin1_General_100_CI_AS_SC 或 Japanese_Bushu_Kakusu_100_CI_AS_SC (如果使用日文定序的話)。 這些定序會使用 UTF-16 格式來編碼 Unicode 字元。 字碼指標值大於 0xFFFF 的字元需要兩個連續的 16 位元單字。 這些字元稱為補充字元,而這兩個連續的 16 位元單字則稱為 Surrogate 字組。 SC 定序可以改善使用 Unicode 類型 nchar 和 nvarchar 的搜尋與排序依據函數。 如需詳細資訊,請參閱<定序與 Unicode 支援>。
XML 的 UTF-16 增補字元 (SC) 定序選項
SQL Server 2012 加入了新的定序選項 ("SC" 或「增補字元」),這個選項可識別定序是否能夠感知 UTF-16。 如需詳細資訊,請參閱<定序與 Unicode 支援>。 SQL Server 2012 也在 SQL 類型 XML 結構描述以及 SQL Server 以 XML 內容公開或取用這項資訊的其他位置加入了這個定序選項的支援。 受影響的位置如下:
SQL 類型 XML 結構描述。 結構描述版本現在是 1.2。 此結構描述具有回溯相容性,而且目標命名空間並未變更。 此結構描述現在會公開 supplementaryCharacters 全域屬性。
含有 FOR XML 的 XMLSCHEMA 指示詞。 新的全域屬性會與相似的屬性 (例如 localeId 和 sqlCompareOptions) 一起公開在 XMLSCHEMA 指示詞所產生的內嵌結構描述和執行個體註解中。 在 RAW 和 AUTO 模式中,FOR XML 支援這個指示詞,但在 EXPLICIT 或 PATH 模式中,則不支援。
sys.sys XML 結構描述集合。 新的全域屬性會在內建的 sys.sys XML 結構描述集合中預先擴展,並且以隱含方式提供於匯入 SQL 類型 XML 結構描述的所有其他 XML 結構描述集合中。
目錄檢視。 新的全域屬性現在列於下列目錄檢視中:
sys.xml_schema_components
sys.xml_schema_attributes
sys.xml_schema_component_placements
升級的 XML 結構描述集合。 從舊版 SQL Server 升級之後,新的全域屬性會公開在匯入 SQL 類型 XML 結構描述的所有 XML 結構描述集合中。
XML 資料行集。 新的全域屬性會加入至表示使用新 UTF-16 定序之 sql_variant 字串的 XML 資料行集值。 它也可以在插入和更新作業期間套用,以便將疏鬆資料行中 sql_variant 類型的字串值設定為使用 UTF-16 感知定序。
特定查詢分頁實作
您可以根據自己提供的資料列位移和資料列計數值,指定 SELECT 陳述式所傳回的資料列範圍。 當您想要針對給定的查詢控制傳送至用戶端應用程式的資料列數目時,這項功能就很有用。 如需詳細資訊,請參閱<ORDER BY 子句 (Transact-SQL)>。
序列物件
序列物件是使用者定義之結構描述繫結的物件,該物件會根據建立序列所使用的規格產生一連串的數值。 其運作方式與識別欄位很相似,不過序號沒有限制為在單一資料表中使用。 如需詳細資訊,請參閱<序號>。
THROW 陳述式
THROW 陳述式可用來引發例外狀況,並將執行轉移至 TRY…CATCH 建構的 CATCH 區塊。 如需詳細資訊,請參閱<THROW (Transact-SQL)>。
14 個新函數和 1 個變更的函數
SQL Server 2012 導入了 14 個新的內建函數。 這些函數會透過模擬許多桌面應用程式之運算式語言所提供的功能,簡化資訊工作者的移轉路徑。 不過,這些函數對於經驗豐富的 SQL Server 使用者也很有用。
新函數包括:
轉換函數
日期和時間函數
邏輯函數
字串函數
除了 14 個新函數以外,一個現有的函數已經變更。 現有的 LOG (Transact-SQL) 函數現在具有第二個選擇性 base 參數。
SQL Server Express LocalDB
SQL Server Express LocalDB 是新的輕量版 Express,包含所有程式設計功能但是以使用者模式執行,並配備快速的零設定安裝,而且所需必要條件很少。 LocalDB 版本的 SQL Server 專供程式開發人員使用。 LocalDB 安裝會複製啟動 SQL Server Database Engine 所需的最少檔案。 安裝 LocalDB 後,開發人員可透過使用特殊連接字串來起始連接。 連接時,就會自動建立及啟動必要的 SQL Server 基礎結構,應用程式不需複雜或耗時的組態工作即可開始使用資料庫。 Developer Tools 為開發人員提供 SQL Server Database Engine,讓他們撰寫和測試 Transact-SQL 程式碼,而不需要管理 SQL Server 的完整伺服器執行個體。 SQL Server Express LocalDB 的執行個體可透過使用 SqlLocalDB.exe 公用程式來管理。 SQL Server Express LocalDB 應該用來取代已被取代的 SQL Server Express 使用者執行個體功能。 如需詳細資訊,請參閱<SQL Server 2012 Express LocalDB>。
全新和強化的查詢最佳化工具提示
已經修改 FORCESEEK 資料表提示的語法。 您現在可以指定索引和索引資料行來進一步控制索引的存取方法。 現有的 FORCESEEK 語法並未修改,運作方式與之前相同。 如果您不打算使用此新功能,應用程式無需變更。
已經加入 FORCESCAN 資料表提示。 它會指定查詢最佳化工具只使用索引掃描作業做為查詢所參考之資料表或檢視表的存取路徑,藉以補充 FORCESEEK 提示不足之處。 當最佳化工具低估受影響的資料列數,而這些查詢又選擇使用搜尋作業,而不使用掃描作業時,即可使用 FORCESCAN 提示。 您可以使用或不使用 INDEX 提示指定 FORCESCAN。 如需詳細資訊,請參閱<資料表提示 (Transact-SQL)>。
擴充事件增強功能
您可以使用下列全新的擴充事件。
page_allocated:
- 欄位:worker_address、number_pages、page_size、page_location、allocator_type、page_allocator_type、pool_id
page_freed:
- 欄位:worker_address、number_pages、page_size、page_location、allocator_type、page_allocator_type、pool_id
allocation_failure:
- 欄位:worker_address、failure_type、allocation_failure_type、resource_size、pool_id、factor
已經修改下列擴充事件。
resource_monitor_ring_buffer_record:
移除的欄位:single_pages_kb、multiple_pages_kb
加入的欄位:target_kb、pages_kb
memory_node_oom_ring_buffer_recorded:
移除的欄位:single_pages_kb、multiple_pages_kb
加入的欄位:target_kb、pages_kb
強化的 OVER 子句支援
OVER 子句已經擴充成支援視窗函數。 視窗函數會在與目前資料列具有某種關聯性的一組資料列之間執行計算。 例如,您可以針對一組資料列使用 ROWS 或 RANGE 子句,以便計算移動平均或累計總和。 如需詳細資訊,請參閱<OVER 子句 (Transact-SQL)>。
此外,允許指定 OVER 子句的彙總函式現在支援在資料分割中排序資料列。
分析函數
已經加入下列分析函數。
XQuery 函數能夠感知 Surrogate
XQuery 函數和運算子的 W3C 建議要求它們將代表高範圍 Unicode 字元的 Surrogate 字組視為 UTF-16 編碼中的單一圖像。 不過,在 SQL Server 2012 之前的 SQL Server 版本中,字串函數無法將 Surrogate 字組辨識成單一字元。 某些字串作業 (例如字串長度計算與子字串擷取) 會傳回錯誤的結果。 SQL Server 2012 現在完全支援 UTF-16,而且能夠正確處理 Surrogate 字組。 如需詳細資訊,請參閱<SQL Server 2012 中對於 Database Engine 的重大變更>主題中的<XQuery 函數能夠感知 Surrogate>一節。