Laden...

[MS SQL] Funktion aufrufen, wenn Timestamp erreicht wird

Erstellt von Yheeky vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.538 Views
Y
Yheeky Themenstarter:in
200 Beiträge seit 2008
vor 12 Jahren
[MS SQL] Funktion aufrufen, wenn Timestamp erreicht wird

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

2.207 Beiträge seit 2011
vor 12 Jahren

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

1.564 Beiträge seit 2007
vor 12 Jahren

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ß.

2.207 Beiträge seit 2011
vor 12 Jahren

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

1.564 Beiträge seit 2007
vor 12 Jahren

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ß.

Y
Yheeky Themenstarter:in
200 Beiträge seit 2008
vor 12 Jahren

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

25 Beiträge seit 2010
vor 12 Jahren

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

151 Beiträge seit 2003
vor 12 Jahren

Wie wärs mit einem trigger? Prüf einfach bei einem insert das Datum und reagiere ...

1.564 Beiträge seit 2007
vor 12 Jahren

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ß.