SQL Server 2008中有關(guān)XML的新功能_Mssql數(shù)據(jù)庫教程
推薦:在SQL Server實例之間傳輸?shù)卿浐兔艽a概要 在將數(shù)據(jù)庫移動到新服務(wù)器后,用戶可能無法登錄到新服務(wù)器。相反,他們會收到下面的錯誤消息: Msg 18456, Level 16, State 1 Login failed for user '%ls'. 您必須將登錄和密碼傳
1 導(dǎo)言Microsoft 在Microsoft SQL Server 2000中推出了與XML相關(guān)的功能以及Transact-SQL 關(guān)鍵字FOR XML和OPENXML ,這使得開發(fā)人員可以編寫Transact-SQL代碼來獲取XML流形式的查詢結(jié)果,并將一個XML文檔分割成一個rowset。SQL Server 2005顯著的擴展了這些XML功能,推出了一個支持XSD schema驗證、基于XQuery的操作和XML索引的本地的xml 數(shù)據(jù)類型。SQL Server 2008建立在之前版本的XML功能基礎(chǔ)之上,做了改進來迎接客戶在存儲和操縱數(shù)據(jù)庫中的XML數(shù)據(jù)時所面臨的挑戰(zhàn)。
2 SQL Server XML 功能的發(fā)展歷程
SQL Server的XML功能隨著從SQL Server2000版本以來的每一個版本而不斷發(fā)展。在我們檢查SQL Server 2008中的改進之前,通過之前的版本來總結(jié)XML功能的發(fā)展歷程可能會比較有用。
2.1 SQL Server 2000中的XML功能
在SQL Server 2000中,Microsoft 推出了Transact-SQL 關(guān)鍵字FOR XML和OPENXML。FOR XML 是對SELECT語句的擴展,它返回如下面的示例所示的XML流式的查詢結(jié)果。
SELECTProductID,ProductName
FROMProductsProduct
FORXMLAUTO
這個查詢返回一個如下面示例所示的XML片斷:
<Product ProductID="1" ProductName="Widget"/>
<Product ProductID="2" ProductName="Sprocket"/>
OPENXML 功能執(zhí)行與FOR XML 條件子句相反的功能,它創(chuàng)建一個XML文檔的rowset ,如下面的示例所示:
DECLARE @doc nvarchar(1000)
SET @doc = '<Order OrderID = "1011">
<Item ProductID="1" Quantity="2"/>
<Item ProductID="2" Quantity="1"/>
</Order>'
DECLARE @xmlDoc integer
EXEC sp_xml_preparedocument @xmlDoc OUTPUT, @doc
SELECT * FROM
OPENXML (@xmlDoc, 'Order/Item', 1)
WITH
(OrderID integer '../@OrderID',
ProductID integer,
Quantity integer)
EXEC sp_xml_removedocument @xmlDoc
注意用sp_xml_preparedocument和sp_xml_removedocument 存儲過程來創(chuàng)建XML文檔的節(jié)點樹的一個內(nèi)存展示的用法。這個Transact-SQL 代碼返回下面的rowset�!�
| OrderID | ProductID | Quantity |
| 1011 | 1 | 2 |
| 1011 | 2 | 1 |
2.2 SQL Server 2005中的XML功能
在SQL Server 2005中,F(xiàn)OR XML 功能得到了增強,它有了對根元素和元素名稱的新的選項、使用FOR XML 調(diào)用以便你可以建立復(fù)雜的層次關(guān)系的能力、和一個新的使得你可以定義將要使用XPath 語法來提取的XML結(jié)構(gòu)的PATH 模式,如下面的示例所示:
SELECT ProductID AS '@ProductID',
ProductName AS 'ProductName'
FROM Products
FOR XML PATH ('Product'), ROOT ('Products')
這個查詢返回下面的XML:
<Products>
<Product ProductID="1">
<ProductName>Widget</ProductName>
</Product>
<Product ProductID="2">
<ProductName>Sprocket</ProductName>
</Product>
</Products>
除了增強SQL Server 2000已推出的XML功能,SQL Server 2005增加了一個新的、本地的xml 數(shù)據(jù)類型,使得你可以為XML數(shù)據(jù)創(chuàng)建變量和列,如下面的示例所示:
CREATE XML SCHEMA COLLECTION ProductSchema AS
'<?xml version="1.0" encoding="UTF-16"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- schema declarations go here -->
</xs:schema>'
分享:也談如何縮小SQL SERVER日志文件前幾天也碰到日志文件過大的問題,數(shù)據(jù)庫實際大小為600M, 日志文件實際大小為33M, 但日志文件占用空間為2.8G! 試了多種方式,SHIRNK DATABASE, TRUNCATE LOG FILE, 都沒辦法將文件縮小。無論
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個方法
- sql刪除重復(fù)數(shù)據(jù)的詳細方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數(shù)的用法實例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
猜你也喜歡看這些
- 網(wǎng)站模板:以數(shù)據(jù)庫字段分組顯示數(shù)據(jù)的sql語句
- 10大關(guān)系數(shù)據(jù)庫SQL注入工具一覽
- mysql出現(xiàn)“Incorrect key file for table”處理方法
- linux Xtrabackup安裝及使用方法
- MySQL筆記之?dāng)?shù)學(xué)函數(shù)詳解
- Windows環(huán)境下重置mysql密碼操作命令
- mysql使用source 命令亂碼問題解決方法
- mysql常用監(jiān)控腳本命令整理
- MySQL和Access的區(qū)別
- MYSQL 批量替換之replace語法的使用詳解
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-SQL Server 2008中有關(guān)XML的新功能
。