Попробуйте использовать табличную функцию.
CREATE FUNCTION dbo.GetTableFromXML(@xml XML)
RETURNS @retXMLTable TABLE
(
-- Columns returned by the function
ID int PRIMARY KEY NOT NULL,
Name nvarchar(max) NULL,
LName nvarchar(max) NULL,
)AS
BEGIN
INSERT @retXMLTable (ID,FirstName,LName)
select @xml.value('/Employees[1]/Person[1]/ID[1]', 'nvarchar(max)'),
@xml.value('/Employees[1]/Person[1]/Name[1]', 'nvarchar(max)')
@xml.value('/Employees[1]/Person[1]/LName [1]', 'nvarchar(max)')
RETURN;
END;
Обычно такой же ответ, как и у Олега, но вы можете работать с результатом в виде таблицы. Если вы воссоздаете образец, вы сразу получите все свои записи из таблицы xml.