Это может прозвучать безумно, когда я раньше объяснял это другим, у меня были несколько испуганных взглядов, но вот установка прямо сейчас:
У нас есть группа рабочих столов, предназначенных для работы с отчетами в течение всего дня, с использованием группы баз данных Access (более 100), которые в настоящее время находятся на файловом сервере (так что сервер хранит файл, а ПК выполняют всю работу). Рабочие столы используют планировщик для активации баз данных, а базы данных используют макрос «autoexec» и модули VBA для запуска отчетов / процессов в них (у некоторых есть несколько отчетов и процессов, у некоторых - только один). Рабочим столам требуется примерно 6 часов для завершения обработки каждый день.
Проект, который я пытаюсь написать, состоит в том, чтобы переместить все это на один сервер, надеюсь, чтобы сэкономить время и определенно освободить рабочие столы для использования.
Вот что я пытаюсь установить: какой тип сервера мы можем получить, чтобы мы могли просто переместить БД с ПК на сервер, запланировать время выполнения на сервере, и он будет запускать их как обычно ( но быстрее)? Есть какие-нибудь представления о «спецификациях», которых будет достаточно? Хотел бы я быть более конкретным, но я занимаюсь программным обеспечением, а не оборудованием, и каждый раз, когда я прошу кого-нибудь из ИТ-отдела, они отвечают: «Прежде всего, прекратите использовать Access!» а оттуда идет под гору ...
Да, во-первых, прекратите пользоваться Access! (для этой задачи) и ... Какой сервер вам нужен ?: если вы планируете переместить БД доступа на сервер, вы перемещаете только процессорное время с настольных компьютеров на сервер. Больше ничего не изменится. Итак, подготовьте сервер с большим количеством процессоров.
Если вы объедините все эти базы данных доступа в базу данных sql server, возможно, вы сможете воспользоваться преимуществами хранимых процедур, представлений и т.д., чтобы сбалансировать выполняемый процесс между базой данных и клиентской программой.
Эта клиентская программа может находиться на другом сервере и выполнять логику, недоступную для базы данных sql. В SQL Server есть службы отчетов, которые могут вам помочь.
Поскольку мы не знаем, как вы приобрели эти базы данных Access и зачем вам их так много, я не могу комментировать, насколько разумно выполнять эту работу с Access.
Предположим, у вас есть веские причины и вы не можете поступить иначе, хотя, вероятно, многое еще предстоит сделать для улучшения вашей ситуации.
Выполните обработку данных на машине, на которой размещены сами файлы базы данных.
Вместо того, чтобы перемещать все данные через медленную сеть, выполнение работы там, где находится база данных, должно быть быстрее.
Перед составлением отчетов сожмите базы данных. Это уменьшит их размер и фрагментацию. Посмотрите на /compact
переключатель командной строки.
Вы точно знаете, какие запросы самые медленные? Измерьте каждый запрос и выясните, какие из них занимают больше всего времени, а затем оптимизируйте их!
Как только вы узнаете, какие запросы нуждаются в оптимизации, убедитесь, что индексы вашей базы данных оптимальны для них!
То же самое с SQL-запросами и кодом VBA: вы уверены, что не можете больше оптимизировать?
Если во время обработки данных ваши базы данных не должны быть доступны кому-либо еще, откройте их в монопольном режиме, снова используя командную строку. /excl
.
Это делает Access в целом быстрее, потому что ему не нужно так сильно блокировать данные.
Переместите все свои данные в SQL Server, MySQL или PostgreSQL, чтобы обработать данные.
Вы по-прежнему можете связать свои клиентские интерфейсы Access с этими базами данных.