本文給出了類型化和非類型化XML列各自的優勢、將SQL Server 2000資料庫遷移到SQL Server2005,新的異常處理如何工作;如果表的架構發生更改,我如何執行操作等,供大家參考!
SQL Server 2005 包括對Transact-SQL (T-SQL) 語言的幾項重要改進。新增功能之一是一種新的觸發器,它在資料定義語言 (Data Definition Language) (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。