Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
ДаЯБыдлокодер 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] Ответить | Цитировать Сообщить модератору |
ДаЯБыдлокодер Member Откуда: Сообщений: 12 |
Уволиться? |
1 июн 13, 12:57 [14378808] Ответить | Цитировать Сообщить модератору |
ДаЯБыдлокодер Member Откуда: Сообщений: 12 |
Да, job'ы с правами sa я тоже не могу создавать. А если попрошу, меня пошлют на ... |
1 июн 13, 13:05 [14378822] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
ДаЯБыдлокодер, SQLXMLBulkLoad? Или вам нужно именно SQL-скриптами? |
1 июн 13, 13:15 [14378839] Ответить | Цитировать Сообщить модератору |
ДаЯБыдлокодер Member Откуда: Сообщений: 12 |
Именно скриптами. Если бы можно было накалякать читающий экзешник я бы и не парился. Служба безопасности категорически запрещает использование внешних программ. Я удивляюсь, как она bcp.exe допустила) |
1 июн 13, 13:23 [14378846] Ответить | Цитировать Сообщить модератору |
ДаЯБыдлокодер Member Откуда: Сообщений: 12 |
Они не шибко соображают в скриптах. Там можно написать трункате олл таблес и нико не почешется (хотя, конечно, самого т рункате и не произойдёт:). |
1 июн 13, 13:41 [14378872] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31779 |
|
||||||
1 июн 13, 13:52 [14378886] Ответить | Цитировать Сообщить модератору |
ДаЯБыдлокодер Member Откуда: Сообщений: 12 |
И чё я парюсь? Ведь задача неразрешима на техническом уровне... Пойду лучше в TimeZero играть... |
1 июн 13, 13:53 [14378887] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31779 |
Во первых, как загружен комп, какие ресурсы. Может, просто распаралелить процесс? Во вторых, попробуйте использовать OPENXML в формате краевой таблицы, так будет работать быстрее. |
||
1 июн 13, 13:55 [14378896] Ответить | Цитировать Сообщить модератору |
ДаЯБыдлокодер Member Откуда: Сообщений: 12 |
Собственно, это и была моя первая мысль после того как ничерта не вышло. Я просто хотел узнать, всё ли я знаю ... Естественно, не всё... Тема закрыта. |
||||||||
1 июн 13, 14:00 [14378909] Ответить | Цитировать Сообщить модератору |
ДаЯБыдлокодер Member Откуда: Сообщений: 12 |
А ещё, я бы хотел сказать спасибо, всем кто откликнулся на мою проблему. В субботу. Днём. А некоторые отзывы меня навели на очень интересные мысли. Только надо сначала повзрослеть)... |
1 июн 13, 14:12 [14378925] Ответить | Цитировать Сообщить модератору |
ДаЯБыдлокодер Member Откуда: Сообщений: 12 |
А ещё, я бы хотел сказать спасибо, всем кто откликнулся на мою проблему. В субботу. Днём. А некоторые отзывы меня навели на очень интересные мысли. Только надо сначала повзрослеть)... |
1 июн 13, 14:19 [14378945] Ответить | Цитировать Сообщить модератору |
ДаЯБыдлокодер Member Откуда: Сообщений: 12 |
на порядок не получается. есть предпосылки к оптимизации, но на фоне общей загрузки они теряются(... |
||||||||
1 июн 13, 15:11 [14379032] Ответить | Цитировать Сообщить модератору |
ДаЯБыдлокодер Member Откуда: Сообщений: 12 |
это я к слову. ответить. на самом деле лучшие решения - это решения административные... |
1 июн 13, 15:18 [14379039] Ответить | Цитировать Сообщить модератору |
ДаЯБыдлокодер Member Откуда: Сообщений: 12 |
это я к слову. ответить. на самом деле лучшие решения - это решения административные... |
1 июн 13, 15:23 [14379042] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |