Есть ли хороший способ создать повторяющийся импорт для сайта ASP.NET? - PullRequest
0 голосов
/ 25 февраля 2009

Сайт, на котором я работаю, работает под управлением Windows Server 2003 и SQL Server 8 (2000?) И ASP.NET 3.5.

Мне нужно запустить какой-нибудь скрипт или приложение для импорта данных из текстового файла FTP в базу данных. На компьютере уже работает сайт, использующий текущую базу данных. Могу ли я использовать запланированное задание, чтобы надежно запустить какую-то страницу ASPX, которая будет импортировать данные? Или есть лучший подход?

Как насчет того, чтобы никто другой не мог получить доступ к странице, которая выполняет импорт? Я не хочу, чтобы случайные пользователи выполняли импорт!

Заранее спасибо!

P.S. некоторая обработка должна происходить с данными перед их вставкой. то есть поиск, условия и т. д., поэтому инструменты БД недостаточно надежны (я думаю). Я ненавижу DTS, и я думаю, что SSIS не доступен в этой версии.

Ответы [ 6 ]

4 голосов
/ 25 февраля 2009

Если вы хотите, чтобы приложение C # обрабатывало ваш импорт, я бы предложил приложение для Windows (exe) без формы (лучше, чем консольное приложение, потому что оно не выдает никакого пользовательского интерфейса при запуске). Пусть он запускается так часто (каждую минуту) по расписанию.

2 голосов
/ 25 февраля 2009

Зачем вам использовать ASP.NET? В зависимости от сложности задания вы можете либо загрузить его непосредственно в базу данных (BULK LOAD), либо использовать DTS (SQL Server 2000) или SSIS (SQL Server 2005/2008), если требуется более сложная обработка.

1 голос
/ 25 февраля 2009

DTS и хранимые процедуры в работе.

BCP и хранимые процедуры в работе.

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

1 голос
/ 25 февраля 2009

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

Другой вариант - написать службу Windows, которая следит за вашим FTP-каталогом и выполняет импорт.

1 голос
/ 25 февраля 2009

запустите BULK INSERT или bcp для импорта данных, см. Здесь http://msdn.microsoft.com/en-us/library/aa173839(SQL.80).aspx

0 голосов
/ 25 февраля 2009

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

С другой стороны, если у вас уже есть все необходимые функции, доступные в веб-приложении, работающем на сервере, то вы, вероятно, можете настроить запланированное задание, которое запускает скрипт (VBscript, JScript), который, в свою очередь, вызывает страница веб-приложения.

Чтобы иметь какую-то защиту (например, предотвращение того, что любой пользователь может вызвать эту страницу), вы можете добавить некоторый код на страницу, который проверяет, была ли страница вызвана с http://localhost. Это по крайней мере предотвратило бы вызов страницы с удаленного клиента.

...