Hi,
ich habe eine SQL Server 2008 R2 Datenbank mit der ich arbeite und suche momentan nach einer Möglichkeit, wie ich folgende Funktionalität umsetzen kann.
Ich habe eine Tabelle in der wöchentlich ca. 30 Einträge hinzukommen. Für diese 30 Einträge gibt es jeweils ein Attribut, welches ein zukünftiges Datum enthält.
Ich suche nun nach einer Möglichkeit, eine Funktion auszuführen, wenn genau das Datum aus einem Datenbank (inkl. Zeitstempel) erreicht wird. Gibt es eine solche Funktion oder muss ich permanent einen Job laufen lassen, der das prüft?
Danke schonmal für die Antworten!
Gruß Yheeky
Guten Morgen Yheeky,
mMn geht das nur mit einem Pollingjob. Etwas anderes ist mir nicht bekannt. Wenn du das unbedingt vermeiden willst kannst du auch bei jedem INSERT eine SqlDependency auslösen, die die Werte auf abgelaufene Daten prüft. Wenn dir das reicht. Kommt ein wenig drauf an, wie zeitnah (zeitnah an dem Zeitstempel in der "ExpiredDate"-Spalte) die Datenbankzeile "abgearbeitet" werden soll.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Guten Morgen
Bei. 30 Einträgen gar kein Problem. Erzeuge einfach bei jeden Eintrag einen Schedule für einen SQL Server Agent Job.
Grüße
Flo
Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+
Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.
Bei. 30 Einträgen gar kein Problem.
Ah, cool, das wusste/kannte ich nicht. Ab wann (wieviele Einträge) wird das ganze den ein Problem?
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hi Coffeebean
Ich weiß nicht wo da die Grenzen liegen, ich habe aber schon in Umgebungen gearbeitet wo täglich einige tausend neue Schedules erzeugt wurden und auch schon mit Agent Jobs die im Minutentakt gelaufen sind. Wenn's aber mehrere tausend Jobs pro Minute würden habe ich bislang immer andere Wege gewählt.
Wenn ich mich recht erinnere muss man, wenn man immer wieder neue Schedules erstellt, also nicht einen der einfach immer wieder läuft, halt die alten Schedules regelmäßig löschen. Sonst läuft einem die msdb voll.
Grüße
Flo
Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+
Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.
Klingt nach einer guten Idee! DANKE!
Wenn die Datensätze mehr werden (was erstmal nicht abzusehen ist) kann ich immer noch über eine andere Variante nachdenken.
Gruß Yheeky
Also, ich mache das auch per Polling. Sind im Moment schon über 100 Anfragen pro Sekunde (weil >1000 Clients alle 10 Sekunden anfragen). Würde ich auf jeden Fall vorziehen.
Das steckt der SQL Server locker weg.
Gruß
Mango
Wie wärs mit einem trigger? Prüf einfach bei einem insert das Datum und reagiere ...
Hi moson
Ich bin mir nicht sicher ob ein Trigger hier die richtige Wahl ist. Wenn ich Yheeky richtig verstanden habe, geht es darum neue Zeilen jetzt einzufügen und später zu verarbeiten, der Trigger feuert sofort.
Man könnte, wenn man will, den Trigger verwenden um die Schedules im SQL Server Agent zu erzeugen. [subjektiv]Allerdings bin ich kein großer Freund von viel Logik in Triggern[/subjektiv]
Grüße
Flo
Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+
Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.