2008-11-01 4 views
3

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

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

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

Каков соответствующий способ миграции?


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

ответ

2

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

+1

Вы имеете в виду "чтобы перенести базу данных JET на SQL Server." Если ваш MDB имеет в нем объекты Access (формы/отчеты/etc.), То по понятным причинам они будут * не * перенесены на SQL Server. – 2008-11-01 23:35:37

1

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

1

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

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

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

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

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

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

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

0

Убедившись область ясна:

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

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

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

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

+0

Доступ также является отличным инструментом для перемещения данных между разрозненными источниками данных, такими как SQL Server и Excel. – 2008-11-01 23:36:18

0

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

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

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

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

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

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

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

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


Примечания:

 
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 
Смежные вопросы