Цитата |
---|
JeyCi написал: в принципе прописать connection из c#/vb.net можно как к Access, так и к MS SQL Server... а потом штамповать запросы для выгрузки в txt |
Вы бы определились чего надо. Access в принципе не быстрый движок, и скорость его работы зависит, в том числе, от железа. Как правило, серверные машины мощнее рабочих станций, плюс к этому внутри SQL серверов есть технологии само оптимизации. Поэтому сервера работаю быстрее не только как отдельная машина, но и на локальной станции. Всякие локальные сервера и БД удобны только тогда, когда требуется разработки переносить на реальный SQL сервер, будет проще адаптировать код, а в некоторых случаях это делается автоматически. Но Access в любом случае пишется на своем коде и здесь вряд ли будет выгода.
На практике для ускорения Access'а используют промежуточные физические таблицы. Пишется процедура, которая формирует физическую таблицу с данными, которые нужны в запросах (одном или нескольким), которые будут предварительно сгруппированы и проиндексированы в этой таблице до выполнения запросов к ней. Далее к ней пишутся запросы. Понятно, что такой подход не гарантирует, что в этой таблице всегда будет свежий массив, но поскольку мы практически в однопользовательском режиме, то вероятность изменения данных в источниках за время исполнения всех запросов ничтожно мала. После получения данных можно таблицу удалить, работать только рекордсетами запросов.
Что качается дружбы Excel и Access, то кроме драйвера ODBC разработчик ничего не предусмотрел, и это не спроста. Иначе как бы он продавал системы типа Cognos, которые позволяют не только извлекать данные, но и писать их обратно на сервер.
Я лично пользуюсь сторонним драйвером SaveToDB и меня это вполне обеспечивает всем необходимым. Например, я храню историю ежедневного изменения базы в 4000-5000 записей в MSServerLocalDB за 2018-2019 гг, не парюсь по ограничению в 1 млн. записей Excel, вместе с этим получаю в экселе отчеты по любой статистике этих изменений в хорошем компактном виде, могу отборами управлять срезами, в тоже время могу из Excel пополнять этот массив данных. А также:
могу извлекать данные не только Excel, но любым SQL клиентом, например тем же ODBC, который есть у всех сотрудников в офисе;
могу настроить триггеры в MSServerLocalDB таким образом, чтобы промежуточные таблицы обновлялись автоматически при изменении их источника, обновлялись не целиком, а только в той части, которая изменилась - такой функционал предоставляет сервер;
при необходимости весь этот код можно перенести на MSSQLServer 20Ххх 1:1 если вдруг проект требует резкого расширения количества пользователей.