0% found this document useful (0 votes)
50 views23 pages

XML Data in MS SQL Server: Query and Modification

This document discusses how XML data can be stored and queried in Microsoft SQL Server. It describes the XML data type in SQL Server and how XML documents and fragments can be stored natively or as BLOB data. It covers validation of XML data against XML schemas, and methods for querying and modifying XML like query(), nodes(), exist(), value(), and modify(). It also discusses publishing XML from the results of SQL queries using the FOR XML clause.

Uploaded by

sql trainer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views23 pages

XML Data in MS SQL Server: Query and Modification

This document discusses how XML data can be stored and queried in Microsoft SQL Server. It describes the XML data type in SQL Server and how XML documents and fragments can be stored natively or as BLOB data. It covers validation of XML data against XML schemas, and methods for querying and modifying XML like query(), nodes(), exist(), value(), and modify(). It also discusses publishing XML from the results of SQL queries using the FOR XML clause.

Uploaded by

sql trainer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 23

XML Data in MS SQL Server

Query and Modification

Steven Blundy, Duc Duong,


Abhishek Mukherji, Bartlett Shappee
CS561
Outline
 Introduction
 XML Data Type
 Structure
and storage
 Schema, validation
 Methods

 Publishing
 FORXML Queries
Approaches for XML integration to DB

 Mid-tier
 Bi-directional XML view
 Query view using XPath

 Schema-driven approach for shredding

 Server-side
 rowset-to-XML aggregator for XML Publishing - FOR XML
 Query-driven shredding mechanism- Open XML
SQL SERVER 2005 XML Architecture
XML Storage - Native
 Checks Well Formedness
 Validation is optional
 XML Documents or Fragments
XML Storage - DB
 SQL BLOB
 Allows for utilization BLOB optimizations
 Streaming
 Parsing
 Compression
 Unicode (UTF-16) Strings - UNTYPED
 Requires Conversion
 XML Schema - TYPED
 Encode to match schema
 Much more efficient
XML Storage - The Numbers
 Advantages of Binary Storage
 20to 30% Size Reduction
 Faster

 Limitations
 2gb of stored binary per instance
 Hierarchy is limited to 128 Levels
Storage - Schema
 Storage Optimization
 Size
 Processing

 Uses the XML Infoset


 Defined in an XMLSchemaCollection
Validation - Schema
 XML Schema Collection
 Stores 1+ XML Schemas
 Identified by Name Space
 Not the Same as Constraints (No Business Logic)

 Metadata Entity
 Certain Type are Format Constrained
 i.e. Date must use ISO 8601 format
 Uses the XML Infoset
Validation - Schema Collection
CREATE XML SCHEMA COLLECTION myCollection AS
'<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://myBooks"
elementFormDefault="qualified"
targetNamespace="http://myBooks">
<xsd:element name="bookstore" type="bookstoreType" />
<xsd:complexType name="bookstoreType">
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="book" type="bookType" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="authorName">
<xsd:sequence>
<xsd:element name="first-name" type="xsd:string" />
<xsd:element name="last-name" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>'
Validation - How?
 At Data Entry
 Validness checked when typed data is
inserted
 Checking Data
 Applied using Cast
 Updated Schema
 Does not Require re-validation
XML DT Methods
 All evaluate an XQuery
 Methods
 query() - returns XML output
 exists() - checks if expression results in nodes
 nodes() - returns XML DT values
 value() - returns value as SQL DT
 modify() - modify XML data
query() & nodes() methods
 Both take XQuery string
 query() returns list of untyped XML nodes
 Can be converted to strings
 For SELECT output

 nodes() returns list of typed XML nodes


 AllXML DT methods available
 count(*) works
 No converting to strings
exist() & value() methods
 exist()
 returns true if XQuery returns any nodes
 value()
 Takes 2 params: an XQuery & a SQL DT
 Converts xml value returned by XQuery to
specified SQL type
Example: value()
SELECT data.value(‘(/bibliograph/book/[1]/title)[1]’,
‘NVARCHAR(255)’) AS Title
FROM Test

Title
Design Patterns
Example: value() w/ nodes()
SELECT book.value(‘(title)[1]’,
‘NVARCHAR(255)’) AS Title
FROM Test CROSS APPLY
data.nodes(‘/bibliograph/book’) AS R(book)

Title
Design Patterns
All about XML

Example: exist()
SELECT book.value(‘(title)[1]’,
‘NVARCHAR(255)’) AS Title
FROM Test CROSS APPLY
data.nodes(‘/bibliograph/book’) AS R(book)
WHERE data.exist(‘/bibliograph/book’) = 1

Title
Design Patterns
All about XML

modify() method
 Uses extended XQuery
 insert, delete, and replace keywords
 Used in SQL UPDATEs
Example: modify()
UPDATE docs SET xCol.modify(‘
insert
<section num="2">
<title>Background</title>
</section>
after (/doc//section[@num=1])[1]')
Example 2: modify()
UPDATE XmlCatalog
SET Document.modify ('
declare namespace bk = "http://myBooks";
replace value of (/bk:bookstore/bk:book [@ISBN="1-861003-11-
0"]/bk:price)[1] with 49.99')
XML Publishing
select CustomerID as "@CustomerID",
City as "address/city",
PostalCode as "address/zip",
ContactName as "contact/name",
Phone as "contact/phone",
from Customers
for xml path('Customer'), root('Doc')
Additional Papers Used
 XML Support in Microsoft SQL Server 2005
 Shankar Pal, Mark Fussell, and Irwin Dolobowsk
 http://msdn2.microsoft.com/en-us/library/ms345117.aspx
 XML Best Practices for Microsoft SQL Server 2005
 Shankar Pal, Vishesh Parikh, Vasili Zolotov, Leo Giakoumakis,
Michael Rys
 http://msdn2.microsoft.com/en-
us/library/ms345115(d=printer).aspx
Questions

You might also like