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