I created a Extended Event to monitor and tune a Selective Xml Index
CREATE EVENT SESSION [SelectiveXmlIndexing] ON SERVER
ADD EVENT sqlserver.selective_xml_index_no_compatible_sql_type,
ADD EVENT sqlserver.selective_xml_index_no_compatible_xsd_types,
ADD EVENT sqlserver.selective_xml_index_path_not_indexed,
ADD EVENT sqlserver.selective_xml_index_path_not_supported
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
GO
In SSMS when I view live data
and then execute the xml
queries and views, no results are being returned.
All i see is:
Is there another step I need to acomplish before seeing the results?
I followed:
http://www.mssqltips.com/sqlservertip/2731/managing-sql-server-extended-events-in-management-studio/
Edit,
Adding requested Query and Index
Query
WITH XMLNAMESPACES ( 'http://tempuri.org/tst.xsd' as tst )
SELECT
x.XmlId
,a.value('@id', 'int') As ColumnA
,b.value('.', 'NVARCHAR(25)') ColumnB
From
dbo.XmlTable As X
Cross Apply x.XmlContent.nodes('tst:Root/tst:Stuff') aa(a)
Cross Apply a.nodes('tst:Forms') bb(b)
And Index for the root element and attribute
CREATE SELECTIVE XML INDEX [xsi_XmlTable] ON [dbo].[XmlTable]
(
[XmlColumn]
)
WITH XMLNAMESPACES
(
DEFAULT 'http://tempuri.org/tst.xsd'
)
FOR
(
[1] = '/Root/Stuff' as XQUERY 'node()',
[2] = '/Root/Stuff/@id' as SQL [int] SINGLETON
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90)
GO
I ultimately want to index the element and the text() of the Forms Element, but the below executes, but is not getting indexed for paths 3 and 4.
[1] = '/Root/Stuff' as XQUERY 'node()',
[2] = '/Root/Stuff/@id' as SQL [int] SINGLETON ,
[3] = '/Root/Forms' as XQUERY 'node()',
[4] = '/Root/Forms/text()' as SQL [nvarchar](25) SINGLETON
Edit: The below will not work either because I have the same path included and receive the error
Paths with same path expression indexed with selective XML index 'xsi_XmlTable' should have SINGLETON option either specified for all of them or for none of them.
So I am trying to test which will work better if I remove Singleton
[3] = '/Root/Forms' as XQUERY 'node()',
[4] = '/Root/Forms' as SQL [nvarchar](25) SINGLETON
Edit, was able to return some results after removing the join from the below query. I am not sure why the join was not allowing it to return results, but just running the straight xquery I was able to return the results but path 3 and 4 i still not getting indexed.
WITH XMLNAMESPACES ( 'http://tempuri.org/tst.xsd' as tst )
SELECT
x.XmlId
,c.Content
,a.value('@id', 'int') As ColumnA
,b.value('.', 'NVARCHAR(25)') ColumnB
From
dbo.XmlTable As X
Cross Apply x.XmlContent.nodes('tst:Root/tst:Stuff') aa(a)
Cross Apply a.nodes('tst:Forms') bb(b)
Inner Join TableC c on c.id = a.value('@id', 'int')
Here is a simple Xml Sample
<tst:Root xmlns:tst="http://tempuri.org/tst.xsd" SchemaVersion="0.1">
<tst:Stuff id="1">
<tst:Forms>Sample1</tst:Forms>
</tst:Stuff>
</tst:Root>