Как решить или пропустить проблему общего доступа к SQLXMLBulkLoad (режим транзакции) - PullRequest
0 голосов
/ 18 сентября 2018

Мне нужно импортировать XML-файл в базу данных Microsoft SQL Server.И у меня есть файл схемы XML (.xsd), который содержит информацию о сопоставлении для файла XML, который будет импортирован.Каждую действительную строку данных в XML-файле необходимо импортировать в строку таблицы базы данных с несколькими столбцами.

Первоначально я использовал SQLXMLBulkLoad (Non Transaction Mode - укажите строку подключения к базе данных), чтобы выполнить эту работу, и этоработает просто отлично, однако есть новое требование, которое требует от меня выполнения хранимой процедуры на том же соединении с базой данных, которое использует SQLXMLBulkLoad.Цель этой хранимой процедуры - связать соединение с определенным идентификатором для текущего пользователя, поскольку может быть несколько пользователей, одновременно импортирующих файл XML.Поэтому я должен вместо этого использовать режим транзакции (- указать соединение с базой данных, а не строку соединения для SQLXMLBulkLoad), что приводит к общеизвестной проблеме общего ресурса в удаленной среде.Если файл xml является локальным, а сервер БД удаленным, мне нужно создать общую папку для SQLXMLBulkLoad для работы.Это плохо, но может быть сделано.

Проблема в том, что папка общего ресурса не принимается нашими клиентами, поэтому мне нужно лучшее решение, которое могло бы удовлетворить новое требование без проблемы с общим ресурсом.

Я некоторое время гуглил и нашел одно решение, которое могло бы работать - SqlBulkCopy, но у меня проблемы с анализом файла схемы (.xsd), потому что он содержит много xml-db:table информации о сопоставлении.

ЛюбоеИдея будет оценена.

...