MS-SQL-Trigger: Befehl auslösen wenn Datum erreicht wird
Hallo,
*Brett vor Kopf, Schlauchsteh*
MS-SQL-DB: ich brauch einen Trigger, der ein Enddatum bei eintreffen eines bestimmten Datums hochsetzt, wenn ein zu prüfender Wert = 1 ist.
Sieht so aus:
Im Prinzip im IST so:
Jetzt muss folgendes passieren: Wenn die SQL-Instance/DB feststellt: Heute ist das Datum 01.02.2021 00:00:00 (also das ContractDateEnd überschritten) dann führe das Statemant aus. Am Ende ist das neue ContractDateEnd der 01.01.2022.
Mit Update/Insert hat das ja nichts zu tun. Da hänge ich gerade....
Danke für Aufhellung im Dunkel
*Brett vor Kopf, Schlauchsteh*
MS-SQL-DB: ich brauch einen Trigger, der ein Enddatum bei eintreffen eines bestimmten Datums hochsetzt, wenn ein zu prüfender Wert = 1 ist.
Sieht so aus:
UPDATE tMyTable
SET ContractDateEnd = DATEADD(MONTH,ContractExtensionByMonths,ContractDateEnd)
WHERE ContractExtensionAutomated = 1 AND ContractDateEnd = GETDATE()
Im Prinzip im IST so:
- der Value ContractDateEnd sagt aus: 31.01.2021 (Vertragsende)
- der Value ContractExtensionAutomated ist "1" (ja, er verlängert sich automatisch)
- der Wert ContractExtensionByMonths ist "12" (Verlängerung um 12 Monate)
Jetzt muss folgendes passieren: Wenn die SQL-Instance/DB feststellt: Heute ist das Datum 01.02.2021 00:00:00 (also das ContractDateEnd überschritten) dann führe das Statemant aus. Am Ende ist das neue ContractDateEnd der 01.01.2022.
Mit Update/Insert hat das ja nichts zu tun. Da hänge ich gerade....
Danke für Aufhellung im Dunkel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 655632
Url: https://administrator.de/contentid/655632
Ausgedruckt am: 19.11.2024 um 09:11 Uhr
6 Kommentare
Neuester Kommentar
Du könntest irgendwo ein PS Script laufen lassen, welches regelmäßig per Scheduled Task gestartet wird und die StoredProcedure ausführen lässt.
Edit:
z.B. (erster Treffer) Execute SQL Server Stored Procedures from PowerShell
Edit:
z.B. (erster Treffer) Execute SQL Server Stored Procedures from PowerShell
Korrekt, Du suchst streng genommen gar keinen Trigger, der kann nämlich nur auf Ereignisse (Insert / Update / Delete) reagieren, du suchst eher einen Job der täglich läuft. SQL Express hat keinen Agent, daher musst du dir anders behelfen.
Eine Möglichkeit wäre ein Windows Task a la
SQL CMD muss dafür erlaubt sein, das kann am Server aktiviert werden. Natürlich kannst du dann auch direkt die SP ausführen, ohne ein Script aus einer Datei zu laden. User und Passwort stehen dann im Task im Klartext! Es bietet sich daher an einen User nur mit Rechten auf die SP und die betroffenen Tabellen zu erstellen.
Eine Möglichkeit wäre ein Windows Task a la
"C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\SQLCMD.EXE" -S "<servername>\SQLEXPRESS" -U "<benutzer>" -P "<passwort>" -i "D:\<sql-script>.sql"
Man kann doch direkt den Windows Users im MS SQL berechtigen, unter welchem der Task dann läuft. Dann muss man in der Kommandozeile oder im Script auch keine extra Anmeldedaten für einen SQL-Benutzer mitgeben.