Мне нужно импортировать XML-файл в базу данных Microsoft SQL Server.И у меня есть файл схемы XML (.xsd
), который содержит информацию о сопоставлении для файла XML, который будет импортирован.Каждую действительную строку данных в XML-файле необходимо импортировать в строку таблицы базы данных с несколькими столбцами.
Первоначально я использовал SQLXMLBulkLoad
(Non Transaction Mode - укажите строку подключения к базе данных), чтобы выполнить эту работу, и этоработает просто отлично, однако есть новое требование, которое требует от меня выполнения хранимой процедуры на том же соединении с базой данных, которое использует SQLXMLBulkLoad
.Цель этой хранимой процедуры - связать соединение с определенным идентификатором для текущего пользователя, поскольку может быть несколько пользователей, одновременно импортирующих файл XML.Поэтому я должен вместо этого использовать режим транзакции (- указать соединение с базой данных, а не строку соединения для SQLXMLBulkLoad
), что приводит к общеизвестной проблеме общего ресурса в удаленной среде.Если файл xml является локальным, а сервер БД удаленным, мне нужно создать общую папку для SQLXMLBulkLoad
для работы.Это плохо, но может быть сделано.
Проблема в том, что папка общего ресурса не принимается нашими клиентами, поэтому мне нужно лучшее решение, которое могло бы удовлетворить новое требование без проблемы с общим ресурсом.
Я некоторое время гуглил и нашел одно решение, которое могло бы работать - SqlBulkCopy
, но у меня проблемы с анализом файла схемы (.xsd
), потому что он содержит много xml-db:table
информации о сопоставлении.
ЛюбоеИдея будет оценена.