Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 импорт xml  [new]
ДаЯБыдлокодер
Member

Откуда:
Сообщений: 12
Доброго всем дня!
Предыстория. Есть несколько распределенных точек продаж. На них установлена некая обособленная программа склад-касса. Раз в сутки она генерирует xml-файлы (UTF-8) с информацией о продажах и выкладывает их на общий сетевой ресурс. Также есть централизованная база данных бухгалтерии предприятия, построенная на SQL Server 2005. Бухгалтерия использует клиентское приложение, организованное таким образом, что позволяет программирование обращений к базе данных непосредственно при помощи скриптов T-SQL. В этом приложении есть, условно говоря, кнопка "Загрузить данные о продажах", при нажатии на которую вызывается примерно такой скрипт (используется xp_cmdshell): чтение сетевого ресурса и составление списка незагруженных файлов. Курсор по составленному списку, который при помощи программы bcp.exe сначала загружает каждый xml-файл во временную таблицу с единственным полем типа nvarchar(max), потом данные этой таблицы (для каждого тэга) собираются в переменную типа nvarchar(max) и передаются процедуре sp_xml_preparedocument. И, наконец, openxml раскладывает данные по таблицам SQL Server с попутным преобразованием получившихся кракозяблов в нормальные русские буквы.
Проблема №1. "Препарирование" каждого файла занимает около 3 минут. Точек порядка ста. Итого выгрузка отрабатывает примерно за 5 часов.
Задача. Оптимизировать процесс хотя бы на порядок.
Проблема №2. Я хотел закачивать файлы при помощи openrowset (bulk) и раскладывать их по таблицам, применяя методы xml. Обработка каждого файла в таком случае занимает несколько секунд. Но админы SQL Server'а отказываются предоставить для этих целей логин, обладающий правами "Administer bulk operations", мотивируя соображениями безопасности.

Вопрос: пааааадскажииииите, что делааааать, пожалуйста (........
1 июн 13, 12:25    [14378778]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
ДаЯБыдлокодер
Member

Откуда:
Сообщений: 12
Уволиться?
1 июн 13, 12:57    [14378808]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
ДаЯБыдлокодер
Member

Откуда:
Сообщений: 12
Да, job'ы с правами sa я тоже не могу создавать. А если попрошу, меня пошлют на ...
1 июн 13, 13:05    [14378822]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
Гость333
Member

Откуда:
Сообщений: 3683
ДаЯБыдлокодер,

SQLXMLBulkLoad? Или вам нужно именно SQL-скриптами?
1 июн 13, 13:15    [14378839]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
ДаЯБыдлокодер
Member

Откуда:
Сообщений: 12
Именно скриптами. Если бы можно было накалякать читающий экзешник я бы и не парился. Служба безопасности категорически запрещает использование внешних программ. Я удивляюсь, как она bcp.exe допустила)
1 июн 13, 13:23    [14378846]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
ДаЯБыдлокодер
Member

Откуда:
Сообщений: 12
Они не шибко соображают в скриптах. Там можно написать трункате олл таблес и нико не почешется (хотя, конечно, самого т рункате и не произойдёт:).
1 июн 13, 13:41    [14378872]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31779
ДаЯБыдлокодер
Именно скриптами. Если бы можно было накалякать читающий экзешник я бы и не парился. Служба безопасности категорически запрещает использование внешних программ. Я удивляюсь, как она bcp.exe допустила)
XMLBulkLoad - такая же внешняя программа, как и bcp, и требует точно таких же прав.
ДаЯБыдлокодер
Но админы SQL Server'а отказываются предоставить для этих целей логин, обладающий правами "Administer bulk operations", мотивируя соображениями безопасности.
Да какие проблемы? Пишите служебку, типа либо для импорта дают права, или пусть апгрейдят железо и дают время на разработки - сделаете обычным парсом в SQL, распаралелив задачу на несколько мощных серверов.
ДаЯБыдлокодер
Уволиться?
Да, тем, кто мешает работе.
1 июн 13, 13:52    [14378886]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
ДаЯБыдлокодер
Member

Откуда:
Сообщений: 12
И чё я парюсь? Ведь задача неразрешима на техническом уровне... Пойду лучше в TimeZero играть...
1 июн 13, 13:53    [14378887]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31779
ДаЯБыдлокодер
Проблема №1. "Препарирование" каждого файла занимает около 3 минут. Точек порядка ста. Итого выгрузка отрабатывает примерно за 5 часов.
Задача. Оптимизировать процесс хотя бы на порядок.
Ещё посмотрите, можно ли оптимизировать.
Во первых, как загружен комп, какие ресурсы. Может, просто распаралелить процесс?

Во вторых, попробуйте использовать OPENXML в формате краевой таблицы, так будет работать быстрее.
1 июн 13, 13:55    [14378896]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
ДаЯБыдлокодер
Member

Откуда:
Сообщений: 12
alexeyvg
ДаЯБыдлокодер
Именно скриптами. Если бы можно было накалякать читающий экзешник я бы и не парился. Служба безопасности категорически запрещает использование внешних программ. Я удивляюсь, как она bcp.exe допустила)
XMLBulkLoad - такая же внешняя программа, как и bcp, и требует точно таких же прав.
ДаЯБыдлокодер
Но админы SQL Server'а отказываются предоставить для этих целей логин, обладающий правами "Administer bulk operations", мотивируя соображениями безопасности.
Да какие проблемы? Пишите служебку, типа либо для импорта дают права, или пусть апгрейдят железо и дают время на разработки - сделаете обычным парсом в SQL, распаралелив задачу на несколько мощных серверов.
ДаЯБыдлокодер
Уволиться?
Да, тем, кто мешает работе.


Собственно, это и была моя первая мысль после того как ничерта не вышло. Я просто хотел узнать, всё ли я знаю ... Естественно, не всё... Тема закрыта.
1 июн 13, 14:00    [14378909]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
ДаЯБыдлокодер
Member

Откуда:
Сообщений: 12
А ещё, я бы хотел сказать спасибо, всем кто откликнулся на мою проблему. В субботу. Днём. А некоторые отзывы меня навели на очень интересные мысли. Только надо сначала повзрослеть)...
1 июн 13, 14:12    [14378925]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
ДаЯБыдлокодер
Member

Откуда:
Сообщений: 12
А ещё, я бы хотел сказать спасибо, всем кто откликнулся на мою проблему. В субботу. Днём. А некоторые отзывы меня навели на очень интересные мысли. Только надо сначала повзрослеть)...
1 июн 13, 14:19    [14378945]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
ДаЯБыдлокодер
Member

Откуда:
Сообщений: 12
alexeyvg
ДаЯБыдлокодер
Именно скриптами. Если бы можно было накалякать читающий экзешник я бы и не парился. Служба безопасности категорически запрещает использование внешних программ. Я удивляюсь, как она bcp.exe допустила)
XMLBulkLoad - такая же внешняя программа, как и bcp, и требует точно таких же прав.
ДаЯБыдлокодер
Но админы SQL Server'а отказываются предоставить для этих целей логин, обладающий правами "Administer bulk operations", мотивируя соображениями безопасности.
Да какие проблемы? Пишите служебку, типа либо для импорта дают права, или пусть апгрейдят железо и дают время на разработки - сделаете обычным парсом в SQL, распаралелив задачу на несколько мощных серверов.
ДаЯБыдлокодер
Уволиться?
Да, тем, кто мешает работе.

на порядок не получается. есть предпосылки к оптимизации, но на фоне общей загрузки они теряются(...
1 июн 13, 15:11    [14379032]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
ДаЯБыдлокодер
Member

Откуда:
Сообщений: 12
это я к слову. ответить. на самом деле лучшие решения - это решения административные...
1 июн 13, 15:18    [14379039]     Ответить | Цитировать Сообщить модератору
 Re: импорт xml  [new]
ДаЯБыдлокодер
Member

Откуда:
Сообщений: 12
это я к слову. ответить. на самом деле лучшие решения - это решения административные...
1 июн 13, 15:23    [14379042]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить