Используя образец базы данных Борей и таблицу Сотрудники, вот способ массовой вставки XML

Настраивать

В таблице «Сотрудники» есть эти столбцы

XML выглядит так

Запрос

DECLARE @xml TABLE (x XML)
 
INSERT @xml
SELECT x
FROM OPENROWSET(BULK 'EmployeesData.xml', SINGLE_BLOB) AS T(x)
 
INSERT INTO Employees                                                                                                                                      
SELECT
    result.LastName,
    result.FirstName,
    result.Title,
    result.TitleOfCourtesy,
    result.BirthDate,
    result.HireDate,
    result.[Address],
    result.City,
    result.Region,
    result.PostalCode,
    result.Country,
    result.HomePhone,
    result.Extension,
    result.Photo,
    result.Notes,
    result.ReportsTo,
    result.PhotoPath
FROM @xml
CROSS APPLY (
   SELECT
       LastName = z.value('LastName[1]', 'nvarchar(20)'),
       FirstName = z.value('FirstName[1]', 'nvarchar(10)'),
       Title = z.value('Title[1]', 'nvarchar(30)'),
       TitleOfCourtesy = z.value('TitleOfCourtesy[1]', 'nvarchar(25)'),
       BirthDate = z.value('BirthDate[1]', 'datetime'),
       HireDate = z.value('HireDate[1]', 'datetime'),
       [Address] = z.value('Address[1]', 'nvarchar(60)'),
       City = z.value('City[1]', 'nvarchar(15)'),
       Region = z.value('Region[1]', 'nvarchar(15)'),
       PostalCode = z.value('PostalCode[1]', 'nvarchar(10)'),
       Country = z.value('Country[1]', 'nvarchar(15)'),
       HomePhone = z.value('HomePhone[1]', 'nvarchar(24)'),
       Extension = z.value('Extension[1]', 'nvarchar(4)'),
       Photo = z.value('Photo[1]', 'varbinary(max)'),
       Notes = z.value('Notes[1]', 'nvarchar(max)'),
       ReportsTo = z.value('ReportsTo[1]', 'int'),
       PhotoPath = z.value('PhotoPath[1]', 'nvarchar(255)')
   FROM x.nodes('/DocumentElement/Employees') T(z)
) result

Использование OPENROWSET с опцией BULK для чтения XML-файла. Это предоставляет данные в одной строке, и если вы удалите все ниже этого вызова и сделаете выбор * из @xml, вы увидите одну строку со всем XML в ней. Вы хотите убедиться, что путь, который вы передаете в OPENROWSET, является правильным путем к XML.