国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

SQL Server 2005的XML支持與異常處理

瀏覽:102日期:2023-11-07 11:38:50

類型化和非類型化XML的優勢

SQL Server 2005 包括對Transact-SQL (T-SQL) 語言的幾項重要改進。新增功能之一是一種新的觸發器,它在數據定義語言 (DDL) 語句運行時激發。在跟蹤或保護數據庫對象的創建和修改,或對數據庫服務器進行更改時,DDL 觸發器非常有用。另一個新功能涉及異常處理,該功能因包含TRY/CATCH 塊而在異常處理方面向前飛躍了一大步。另一組新功能則以新的XML數據類型為中心,該數據類型在與SQL Server交互的企業應用程序中管理XML數據方面前進了一大部。現在,XML 文檔或片段可以存儲于 XML 列、綁定到架構、還可以利用 XQuery 語法查詢。本文匯總各類問題來做出詳細解答。

問:類型化和非類型化 XML 列各自的優勢是什么?

答:非類型化 XML 列可以存儲所有格式規范的 XML 片段或文檔,而類型化 XML 列可以綁定到 XML 架構。如果不確定 XML 將遵循哪個架構,則非類型化 XML 很有用。例如,如果您必須使用另一個應用程序的某些 XML,但無法確定數據將遵循哪個 XML 架構,則可以使用非類型化 XML 列來執行這項工作。當然,非類型化 XML 也會帶來其他問題。例如,不能針對某個架構編程,因此很難有效地使用 XML。但有時無法避免非類型化 XML。創建非類型化 XML 列非常簡單,如下所示:

CREATE TABLE Foo(FooID INT, someXml XML)

架構不綁定到 XML 列的另一個結果是,SQL Server? 2005 會將非類型化 XML 作為一個字符串存儲。這是件好事還是壞事?實際上,既是好事也是壞事。將 XML 作為字符串存儲使您可以更靈活地存儲任何 XML 片段或文檔。根據應用程序的業務規則,您可能需要這種方式。另一方面,將 XML 作為字符串存儲意味著,與類型化 XML 相比,既不能有效地存儲也不能有效地搜索 XML 數據。并且既不會告訴 SQL Server XML 將包含哪些內容,也不會告訴它層次結構和 XML 節點的數據類型。但請記住,僅僅因為這些是非類型化 XML 列并不意味著它們可以接受您設計出的任何格式。類型化和非類型化 XML 列仍然只接受格式規范的 XML。

如果您要存儲架構已知的 XML 文檔,類型化 XML 列很理想。架構可以定義元素、屬性、它們的數據類型、需要哪些字段以及數據的整個層次結構。由于這種詳細信息有關 XML 列的數據,因此 SQL Server 2005 可以在內部更加有效地存儲 XML 數據。如果您嘗試存儲與架構不匹配的 XML 數據,則 SQL Server 會檢測到這一點并阻止您。

創建類型化 XML 列就像在括號中添加架構名稱一樣簡單,如下所示:

CREATE TABLE Foo(FooID INT, someXml XML(CONTENT FooSchema))

該語句指出 someXml 列必須遵循名為 FooSchema 的 XML 架構集合。通過分別包含相應的關鍵字 DOCUMENT 或 CONTENT,XML 可指定為必須是一個文檔或者可以包含一個片段。如果省略,則默認值為 CONTENT。

可以使用 T-SQL 命令將 XML 架構集合添加到數據庫中,如下所示:

CREATE XML SCHEMA COLLECTION [FooSchema] AS N 'put your schema here'

也可以使用 SQL Server Management Studio (SSMS) 創建 XML 架構集合模板。從 View 菜單打開 Template Explorer,然后導航到 XML Schema Collections 節點并展開它。然后,您可以雙擊 CREATE 模板打開一個模板,該模板為您創建 XML 架構集合提供了一個良好的語法開端(參見圖 1)。

圖1:XML架構集合模板是SSMS

標簽: Sql Server 數據庫
相關文章:
主站蜘蛛池模板: 隆子县| 荃湾区| 天门市| 新昌县| 高平市| 鸡泽县| 页游| 阿克陶县| 健康| 安龙县| 长海县| 辰溪县| 卓尼县| 河南省| 玉田县| 光泽县| 静安区| 丰镇市| 静安区| 金堂县| 盐源县| 元谋县| 太保市| 上思县| 天全县| 沛县| 延安市| 石阡县| 龙胜| 中牟县| 罗田县| 道孚县| 奇台县| 安图县| 长汀县| 龙山县| 常山县| 大同市| 阿巴嘎旗| 东阳市| 丰台区|