В текущей деятельности у нас часто возникают задачи поиска необходимой информации по списку идентификаторов (списку клиентов, счетов, номеров договоров, ИНН). По сути ничего сложного: создал на сервере временную таблицу, залил в нее список идентификаторов, написал запрос с указанием нужных полей и выгрузил. Но бывают случаи, когда нет возможности создать временную таблицу, а к серверу есть доступ только на чтение. Как же быть?
Если выборка небольшая, то все выгрузить поможет оператор IN (WHERE ID IN (список идентификаторов), но что делать если объем данных существенный? Можно вручную писать множество запросов и после их завершения выгружать данные на диск, но это долго. Для решения этой проблемы ИТ специалисты службы Аудита разработали программу на C#, позволяющую автоматизировать процесс выгрузки больших объемов данных с серверов с правами доступа только на чтение.
На вход в программу необходимо подать информацию о наименовании сервера, SQL скрипт с необходимыми полями и список идентификаторов, по которым необходимо производить поиск информации. При необходимости ограничения периода или наличии дополнительных условий все они отражаются в скрипте (скрипт изложен внизу статьи)
Программа автоматически создает SQL запросы с оператором IN по 1000 ID в каждом. Последовательно выполняя запросы записывает результаты в текстовые файлы. По завершению выполнения всех запросов данные объединяются. В функционал Программы заложена возможность одновременного запуска нескольких запросов, их количество указывается в поле «Количество потоков». Программа имеет ограничения в 100 одновременно запущенных потоков. Оператор должен учитывать, что большое количество потоков увеличивает трафик, возможно будет воспринята администраторами как вирусная активность.
Программа работает независимо от других приложений, после запуска позволяет оператору пользоваться любыми программами. Возможно оставлять запущенную программу в ночь и на выходные.
Существуют две версии программы для серверов MS SQL и Oracle.
Создание программы позволило существенно повысить производительность работы аудиторов, а пользоваться ей могут сотрудники, обладающие минимум знаний SQL. Быстро отрабатываемые запросы создают незначительную нагрузку на сервер при этом позволяя выгружать большие объемы данных.
Почему такой странный способ? Ещё и батчим только по 1000 строк.
Если права только на чтение, то не легче ли тогда создать CTE с помощью ключевого слова WITH и просто сджойнить необходимую таблицу к ней.
Алексей, спасибо за вопрос.Данный скрипт позволяет осуществлять поиск информации по ID более 5 тыс., что затруднительно для предложенного вами варианта, к тому же выгрузка в несколько потоков позволяет ускорить процесс.
Нормальная курсовая вышла :) Правда на четвёрочку где-то (придираюсь, ага)
Комментарий недоступен
Arthur, спасибо за напоминание! Продолжение будет, пока в работе
Почему такой странный способ? Ещё и батчим только по 1000 строк.
Если права только на чтение, то не легче ли тогда создать CTE с помощью ключевого слова WITH и просто сджойнить необходимую таблицу к ней.
Алексей, спасибо за вопрос.Данный скрипт позволяет осуществлять поиск информации по ID более 5 тыс., что затруднительно для предложенного вами варианта, к тому же выгрузка в несколько потоков позволяет ускорить процесс.