Обычно мы разрабатываем отчёты и процедуры прямо на рабочем сервере, хотя это не самый правильный вариант. Помню как в начале обретения опыта по работе с SQL Server’ом я чуть не «положил» сервер, случайно запустив бесконечный цикл 🙂
Наиболее продвинутые компании, которые могут себе это позволить, обычно создают 3 отдельных окружения: Production (которое то ли в шутку, то ли по незнанию, иногда переводят как «Продуктовое»), т.е. рабочее, Development — окружение для разработки нового и Test — тестовое окружение. Я встречал даже PreProduction, ну, не знаю, это, на мой взгляд уже перебор, впрочем я всегда как в анекдоте про неопытного и опытного консультантов говорю: «раз так сделано, значит какой-то смысл в этом был, значит так кому-то было надо».
Нейросеть Кандинский на мой запрос про эти 3 сервера (окружения) выдала вот такую картинку:
Но если серьёзно, как обычно происходит процесс обновления данных?
Если Вы работаете на рабочем сервере в той же базе данных, где хранит данные ваша система, то тут и вопрос не возникает. Они сразу актуальные, если мы говорим просто об их чтении (об отчётах). Если же ваша процедура что-то с этими данными делает и куда-то результат этих действий сохраняет, то обычно для разработки и тестирования таких процедур используют тестовую компанию. В Скале — обычно это отдельные таблицы внутри той же самой базы данных, так что вопрос также фактически не возникает (с небольшими нюансами). Иногда в Скале для каждой компании создаётся отдельная база данных и тут уже могут возникать вопросы с доступом. Аналогично, если существуют 3 отдельных окружения. Так, например, у одного из моих клиентов мне был предоставлен доступ только в тестовое окружение, где актуальность данных оставляла желать лучшего, данные примерно соответствовали рабочим данным 2-3 месячной давности. В то же время общение с сотрудниками велось на основе примеров конкретных заказов, разумеется, они не хотели заходить в тестовое окружение и вколачивать примеры из 80-150 строк. В этой ситуации логичной кажется просьба к ИТ сотрудникам клиента обновить данные в тестовом окружении. Как обычно это делается? Берётся резервная копия БД с рабочего сервера (или рабочей компании в Скале, если для каждой компании создаётся своя собственная БД) и восстанавливается на тестовом сервере (или в тестовой БД). И всё нажитое непосильным трудом нужно восстанавливать «по новой». Самое главное при этом, чтобы обновление произошло не в тот момент, когда вы вносите какие-то изменения в свои процедуры и ещё не успели сохранить их текст 🙂
Опытные люди при этом поступают иначе: они все хранимые процедуры или представления для отчётов или каких-то процедур преобразования данных размещают в отдельной специально для этого созданной базе данных. В этом случае при обновлении данных (восстановлении БД с данными системы из резервной копии с рабочего сервера или рабочей компании) ничего делать не требуется, все ваши наработки остаются нетронутыми. Я уже рассказал об этом (подсмотренным у клиента) подходе некоторым своим коллегам, но считаю, что нужно поделиться и с вами 🙂