Đây là ans với toán tử xquery ->
declare @xmldata xml
set @xmldata =
'<DynamicProfile xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WinTest">
<AllData xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d2p1:KeyValueOfstringstring>
<d2p1:Key>MyFirstKey</d2p1:Key>
<d2p1:Value>MyFirstValue</d2p1:Value>
</d2p1:KeyValueOfstringstring>
<d2p1:KeyValueOfstringstring>
<d2p1:Key>MySecondKey</d2p1:Key>
<d2p1:Value>MySecondValue</d2p1:Value>
</d2p1:KeyValueOfstringstring>
<d2p1:KeyValueOfstringstring>
<d2p1:Key>MySecondKey</d2p1:Key>
<d2p1:Value>MySecondValue</d2p1:Value>
</d2p1:KeyValueOfstringstring> <d2p1:KeyValueOfstringstring>
<d2p1:Key>MyFirstKey</d2p1:Key>
<d2p1:Value>MySecondValue</d2p1:Value>
</d2p1:KeyValueOfstringstring> <d2p1:KeyValueOfstringstring>
<d2p1:Key>MyFirstKey</d2p1:Key>
<d2p1:Value>MySecondValue</d2p1:Value>
</d2p1:KeyValueOfstringstring> <d2p1:KeyValueOfstringstring>
<d2p1:Key>MySecondKey</d2p1:Key>
<d2p1:Value>MySecondValue</d2p1:Value>
</d2p1:KeyValueOfstringstring> <d2p1:KeyValueOfstringstring>
<d2p1:Key>MySecondKey</d2p1:Key>
<d2p1:Value>MySecondValue</d2p1:Value>
</d2p1:KeyValueOfstringstring> <d2p1:KeyValueOfstringstring>
<d2p1:Key>MyFirstKey</d2p1:Key>
<d2p1:Value>MySecondValue</d2p1:Value>
</d2p1:KeyValueOfstringstring> </AllData>
</DynamicProfile>'
;WITH XMLNAMESPACES
(
DEFAULT 'http://schemas.datacontract.org/2004/07/WinTest',
'http://schemas.microsoft.com/2003/10/Serialization/Arrays' as d2p1
)
SELECT x.c.value('(d2p1:Key)[1]', 'varchar(100)') as key3, x.c.value('(d2p1:Value)[1]', 'varchar(100)') as value
FROM @xmldata.nodes('/DynamicProfile/AllData/d2p1:KeyValueOfstringstring') x(c) where x.c.value('(d2p1:Key)[1]', 'varchar(100)') = 'MySecondKey'