2009-11-20 6 views
1

Я работаю над программой управления прайс-листом для своей компании на C# (Prototype находится в Win Forms, но я думаю об использовании WPF для окончательного ap в качестве учебного упражнения MVVM).Лучший способ включить устаревшие данные

Наша система EMS основана на заднем конце COBOL и останется таким образом в течение как минимум 3 лет, поэтому я не могу напрямую получить доступ к ее данным. Я хочу периодически извлекать данные из них из системы EMS, чтобы гарантировать, что цена остается в синхронизации (и предоставлять некоторую другую информацию пользователям в виде не редактируемой информации, такой как местоположения бинов). Что я делаю ...

Использовать WinBatch для автоматического запуска отчета в ночное время, чтобы использовать Monarch для преобразования текстового отчета в плоский файл (.xls?) Отбросьте файл в папку и напишите small ap, чтобы прочитать его и добавить в базу данных

Как следует добавить это в базу данных? (SQL Express) Я мог бы иметь таблицу, которая просто заменяется полностью каждый раз, но я начинаю в большинстве случаев, и меня беспокоит, что произойдет, если бы вся таблица была заменена, когда база данных использовалась прейскурантом ap.

Майк

+0

У меня есть три ответа, и я склоняюсь к мыслям кодиманикса? –

ответ

1

Если укоротить и заправить всю таблицу, вы должны сделать это в одной транзакции и поместить полную блокировку таблицы. Это более безопасно и быстро.

Вы также можете обновить все измененные строки, а затем вставить новые (отсутствующие строки), а затем удалить все строки, которые не были обновлены в этом прогоне (вставьте какой-то номер версии в каждой строке, чтобы определить это).

0

Сначала создайте файл .txt из унаследованного приложения. Затем используйте пакетную вставку, чтобы вытащить ее в рабочий стол для любой очистки, которую вы должны сделать. Сделайте очистку с помощью t-sql. Затем запустите t-sql, чтобы вставить новые данные в соответствующие таблицы и/или обновить строки, где данные были изменены. Если есть записи toomany, вставляйте и обновляйте их партиями. Запланируйте все это как задание для работы в часы, когда база данных не занята.

Вы можете, конечно, сделать все это в SSIS, но я не знаю, доступно ли это с помощью Express.

0

Есть ли какие-либо поля/таблицы, которые могут вам рассказать, когда цена была последней модификацией? Если это так, вы можете просто вытащить недавно обновленные строки и обновить их в своей базе данных. Предполагая, что у вас есть доступный уникальный первичный ключ в хранилище данных приложения cobol.

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

(я не знаком с COBOL на всех, просто бросали идеи там)

Смежные вопросы