2009-05-27 5 views
1

Ich habe einen Webserver und einen Datenbankserver, und ich möchte einen Job ausführen, der eine vorhandene C# DLL verwendet, um auf die Datenbank zuzugreifen und einige Berechnungen durchzuführen.Geplante Aufgabe oder Dienst für Routine-Datenbank-Job in C#?

Ist die einfachste Methode, eine Konsolenanwendung in C# zu erstellen und auf dem Webserver (Anwendungsserver) für den DB-Server zu planen?

Ich sehe SSIS als eine Option, aber ich weiß es nicht gut, also dachte ich, eine Konsolen-App wäre am besten geplant.

Was denkst du?

Antwort

0

Sie müssen keine separate Konsolenanwendung dafür schreiben, wenn der Job sehr geringfügig ist. Sie können eine Seite separat schreiben und eine Batch-Datei, d. h. einen Scheduler, für die Planung schreiben. Sie können es auch über die Benutzeroberfläche des Fensters einplanen. Abgesehen davon, wenn Ihr Job Plan/Schritt eines Wartungsplans ist (wie Neuindizierung, Backup von db, Defragmentierung, Bereinigung von Verlauf/Protokoll usw.), dann erstellen Sie einen Wartungsplan dafür von Ihrem SQL-Server, unter "Management "Ordner verfügbar.

0

Sie können Ihre C# -DLL auch über ein PowerShell-Skript aufrufen und dieses Skript als geplante Aufgabe ausführen.

Für Operationen, die sofortige Aktionen im Hintergrund erfordern, bevorzuge ich einen Dienst für jedes meiner Projekte.

0

Sie können Quartz.NET-Bibliothek (quariknet.sourceforge.net) für die Planung innerhalb Ihrer Konsole App verwenden, es ist Open Source und es funktioniert perfekt!

0

Ja, die einfachste Lösung besteht darin, eine separate Konsolenanwendung zu erstellen und sie als geplante Aufgabe auszuführen.

Sie haben Zugriff auf den Webserver und alle Tools sind bereits installiert, ohne dass etwas anderes installiert werden muss.

1

Ich bin ein großer Fan der Konsole App + geplante Aufgabe Ansatz. Es neigt dazu, sauberer zu sein, einfacher zu testen und leichter wieder zu laufen, wenn etwas nach Süden geht. Das heißt, wenn Sie die Berechnungen in reinem SQL schreiben können, könnten Sie einfach alles als SQL-Job ausführen. Alternativ können Sie SQLCLR (.NET-Assemblys, die in SQL Server ausgeführt werden und im Grunde als Sproc oder UDF angezeigt werden) nutzen und auch Dinge komplett innerhalb der SQL-Job-Engine ausführen.

+0

Ich mag die SQLCLR Ansatz, weil es alles isoliert auf der Datenbank Maschine hält ... –

+0

Wahr, aber der Nachteil ist die App kann schwer zu testen, als auch viele DBAs werden Sie nicht so nah an ihren Boxen. –

Verwandte Themen