Как перейти с MS Access на SQL Server 2005?

У меня есть приложение Windows VB.NET, которое извлекает информацию из базы данных MS Access. Основная роль приложения - извлекать информацию из файлов Excel в различных форматах, стандартизировать структуру файла и записывать ее в файлы csv. Приложение использует MS Access в качестве источника ключей и файлов перекрестных ссылок.

Приложение Windows использует типизированные наборы данных для большей части взаимодействия пользователя с базой данных. Стандартизация выполняется на каждом клиентском компьютере. Приложение не ... как бы это сказать ... БЫСТРО :-).

Вопрос: Как лучше всего перенести базу данных и приложение на SQL Server 2005. Я думаю, что было бы неплохо написать код для стандартизации в пакетах SSIS.

Как лучше всего осуществить эту миграцию?


Приложение извлекает данные из 250 файлов Excel каждую неделю и приблизительно 800 файлов каждый месяц, в среднем около 5000 строк на файл. Существует 13 различных форматов файлов, которые стандартизированы и переведены в 3 различных стандартных формата. Приложение занимает от 25 минут. и 40 минут на выполнение в зависимости от того, о каких данных мы говорим. 95% заявки - это процесс стандартизации. Все, что делает пользователь, - это выбирает несколько параметров, а затем запускает запуск.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
2 007
5

Ответы 5

Microsoft предоставляет бесплатный инструмент для переноса базы данных Access на SQL Server. После обновления вы сможете изменить строку подключения так, чтобы она указывала на SQL Server.

Вы имеете в виду «перенести базу данных JET на SQL Server». Если в вашем MDB есть объекты Access (формы / отчеты / и т. д.), То по очевидным причинам они будут перенесены на SQL Server.

David-W-Fenton 02.11.2008 02:35

Возможно, вы захотите запустить свое приложение через профилировщик, чтобы убедиться, что база данных Access действительно замедляет ваше приложение, а не что-то еще. Было бы обидно проделать всю работу, чтобы преобразовать его в SQL-сервер, и не получить ничего, что можно было бы показать.

В качестве отправной точки можно использовать мастер увеличения размера Access.

Вы можете изменить серверную часть на SQL Server со связанными таблицами в Access без изменения внешнего интерфейса. Затем вы можете изменить внешний интерфейс, чтобы по желанию переходить непосредственно к SQL Server.

Если только вы не сильно попадаете в Access, я сомневаюсь, что это ваше узкое место.

Что касается чтения файлов Excel, SSIS может это сделать, но это может быть не так надежно, как механизм, который вы используете в VB.NET прямо сейчас, если ваш код VB.NET имеет много умной логики для работы с определенной степенью вариаций во входных файлах

Что касается записи данных в CSV, SSIS в порядке, и я считаю, что SSIS неплохо справляется.

Если бы вы могли предоставить более подробную информацию о рабочем процессе и о том, насколько пользователь взаимодействует с базой данных по сравнению с конфигурацией извлечения программы, вам было бы легче помочь с вашей архитектурой.

SSIS очень настраивается на лету (пакет настраивается несколько во время работы), и во многих случаях его можно запрограммировать на чтение различных файлов Excel и преобразование их в CSV, но это не так настраивается на лету, как рука. -кодированная система. Также можно использовать объектную модель SSIS для программного создания пакетов, а затем их выполнения - это не имеет некоторых ограничений, связанных с настройкой самого пакета, но объектная модель довольно сложна.

Убедитесь, что область видимости ясна:

  1. Используйте программу .NET для
  2. управлять интерфейсом базы данных Access, который позволяет
  3. Извлекать данные из нескольких таблиц Excel,
  4. Правильная обработка данных и
  5. Сохраните результат в файл CSV.

О каких объемах мы говорим? Сколько клиентов, сколько таблиц на одного клиента, сколько строк в таблице (я думаю, что это будет максимум 32767 для одной таблицы, верно? И сколько времени мы говорим?

Похоже, много движущихся частей. И Access обычно является довольно хорошим инструментом (с VBA), чтобы делать такие вещи самостоятельно.

Кажется, что объема недостаточно, чтобы обеспечить основной приемник времени для хорошо спроектированной внешней базы данных Access Excel, чтобы выполнить весь процесс с помощью VBA. Если ваша альтернатива предполагает установку и эксплуатацию SQL Server (вместо Access) на каждом клиенте, я был бы удивлен, если административные и операционные издержки не увеличились.

Access также является отличным инструментом для перемещения данных между разнородными источниками данных, такими как SQL Server и Excel.

David-W-Fenton 02.11.2008 02:36

Итак, еженедельно для каждого клиента: 250 файлов за 25 минут = 10 файлов в минуту или 6 секунд на файл.

Ежемесячно на одного клиента: 800 файлов за 40 минут = 20 файлов в минуту или 3 секунды на файл.

Мое ожидание будет меньше 1 секунды. на файл (5000 строк) туда и обратно, включая:
a. Импортировать или прикрепить xls к mdb,
b. Преобразование через Access SQL
c. Экспорт в CSV

Единственное объяснение, которое приходит на ум, заключается в том, что, возможно, приложение .NET читает, преобразовывает и сохраняет строку за раз. Возможно ли это?

Если вы конвертируете в SSIS, то это, вероятно, приведет к устареванию приложения .NET, потому что SSIS захочет обрабатывать ETL (и сохранять) сам. Таким образом, вы будете в основном переписывать программное обеспечение. Но у вас могут быть лучшие ресурсы для SSIS, чем для Access. Но мне это кажется излишеством. Но тогда .NET, а не VBA, тоже может оказаться излишним; и переписывание на VBA - тоже работа. Я думаю, что наименьшее усилие - это увидеть, можете ли вы выполнить весь ETL (и сохранить), используя Access SQL для большей его части и используя VBA только для написания сценариев, для перебора входных файлов в каталоге или чего-то подобного.

Я думаю, вы могли бы, по крайней мере, прототипировать основные варианты использования и выяснить, сможете ли вы довольно быстро выяснить, где сейчас тратится время (как предполагалось в предыдущих ответах). Но это стоит выяснить, прежде чем выделять ресурсы для перепланировки, нацеленные на неправильная часть проблемы. Если вы можете немного расшириться в этих областях, я, вероятно, смогу направить вас дальше. Но Access очень хорошо подходит для такого рода вещей, при (IMHO) более низкой совокупной стоимости владения, чем SQL Server + SSIS + .NET.

Не говоря уже о том, что я был бы удивлен, если файлы csv являются истинной конечной точкой, которая может сыграть роль в принятии решения. Разве данные Excel не попадают в дальнейший путь?

Наконец, насколько нежелателен 25-40-минутный процесс, который предположительно проходит без присмотра, может продолжаться после обеденного перерыва и, возможно, в основном работает нормально?


Notes:
Per week    

Excel Files 250
Minutes 25
Minutes/File    0.1
Sec/File    6


Per month   

Excel files 800
Minutes 40
Minutes/File    0.05
Sec/File    3

Другие вопросы по теме