2011-06-30 12 views
5

Chciałbym wiedzieć, czy możliwe jest okresowe uruchamianie aplikacji C# lub aplikacji ASP.NET.Uruchamiaj regularnie aplikację C#, aby zaktualizować bazę danych

Moim celem jest automatycznie wykonać następujące kroki, raz w miesiącu:

1) QueryŹródło bazy danych.

2) Take rezultatem kwerendy w (1) i manipulować je za pomocą LINQ i C#, na przykład poprzez sprawdzenie, czy dany stosunek jest już obecny w docelowej bazie danych.

3) Przechowuj dane pochodne w docelowej bazie danych.

Aplikacja musi uruchomić na Windows Server 2008 , baza Źródło jest w SQL 2005 Server a baza danych Destination jest w SQL Server 2008.

Próbowałem utworzyć na przykład pakiet SSIS, ale nie wykona on pracy, ponieważ nie mogę dodać żadnej logiki.

Ktoś ma jakieś sugestie?

+3

Można to zrobić w SSIS. Masz zadanie skryptu, aby napisać swój skrypt. – vikramjb

+1

Dlaczego musisz używać C#? Czy możesz po prostu zamknąć tę logikę w jednej lub wielu procedurach przechowywanych i zaplanować je za pomocą agenta SQL? – Yuck

+2

Alternatywnie można również utworzyć aplikację dotnet z linii poleceń i zaplanować ją za pomocą agenta zaplanowanego lub agenta SQL Server. – vikramjb

Odpowiedz

10

Powinieneś utworzyć Zaplanowane zadanie, aby to wykonać. Spójrz tutaj: Panel sterowania -> Narzędzia administracyjne -> Harmonogram zadań

I tak jak stwierdzono, tak - zalecana jest aplikacja konsolowa.


Edit

zgadzam się z @andynormancx w tym SSIS może być lepszym sposobem, aby to zrobić; jednak powszechnie akceptuje się tworzenie aplikacji konsolowej wykonanej według zaplanowanego zadania. Tutaj sprowadzają się do twoich zasobów, czasu i wiedzy: warto lub nie warto podejmować wysiłku, aby dowiedzieć się wystarczająco dużo o SSIS, aby utworzyć pakiet w SqlServer, aby zrobić to, czego potrzebujesz. Jeśli ktoś miałby udzielić kompletnej odpowiedzi używając SSIS do wykonania tego zadania, z pewnością pokłoniłbym się tą wiedzą.

+3

+1 - Chciałbym dodać, że powinieneś zrobić tę aplikację konsolową. – Keith

+0

JEŻELI logika jest prosta, można również utworzyć procedurę składowaną i wykonać ją jako zadanie w sql. Ale harmonogram zadań byłby najlepszy – fluf

+0

@Keith - uzgodniony – IAbstract

-1

Możesz to zrobić, oczywiście. Ale polecam uczynienie go usługą Windows.

+3

Dlaczego polecasz usługę Windows? – IAbstract

+1

@Abstract - Polecam to również jako usługa Windows, ponieważ będzie działała na zapleczu, aby użytkownik nie musiał się martwić o uruchamianie kodu co miesiąc. Ustaw go na czas i nie martw się o to. Dlaczego nie napiszesz tego jako usługi? – Jethro

+2

Znacznie lepiej jest używać zaplanowanego zadania niż mieć dedykowaną usługę, która kręci się tylko po to, aby uruchomić zadanie raz w miesiącu. A podczas pisania usługi Windows jest teraz znacznie łatwiejsze, uruchomienie zadania za pośrednictwem harmonogramu jest wciąż o wiele mniej kłopotów. – andynormancx

3

Można utworzyć zaplanowane zadanie, które będzie wywoływać twój plik .exe we wstępnie zdefiniowanym przedziale.

Idź do panelu sterowania i wybierz zaplanowane zadanie, a następnie dodać zaplanowane zadanie

-2

Jeśli naprawdę chcesz to zrobić w C# Proponuję napisać usługę, Twój kod jest prawie identyczny do normalnego aplikacji konsoli.

Sprawdź poniższy link, aby rozpocząć. C# Service step by step

+1

Usługa Windows jest przesadą dla czegoś takiego. – IAbstract

4

Można utworzyć nowe zaplanowane zadanie Zaplanowane zadanie. Byłoby to o wiele łatwiejsze i nie trzeba ponownie wymyślać koła.

Powiązane problemy