konto usunięte

Temat: [MSSQL] Automatyczne przeniesienie rekordu do innej tabeli

Witam

Potrzebuję automatycznie przenieść rekord do innej tabeli jeżeli EndTime <= aktualna_data.
Np. przykład z allegro. Tworze aukcję która ma się zakończyć za 2 dni.Mijają dwa dni aukcja kończy się o 12:00, o tej godzinie aukcja zostaje przeniesiona do innej tabeli i wyłoniony zostaje zwycięzca.
W jaki sposób można wykonać taką operację?

Z góry dziękuję za pomoc
Jarosław Kędzierski

Jarosław Kędzierski Admin od okienek

Temat: [MSSQL] Automatyczne przeniesienie rekordu do innej tabeli

Chodzi więc o mechanizm, który "na bieżąco" sprawdza czy data nie jest równa aktualnej we wszystkich rekordach tabeli i przenosi jeden z nich do drugiej.

Nie da się więc zastosować trigerów, bo kontrola daty nie odbywa się przy wstawianiu.

Jedynym rozwiązaniem pozostają więc Joby. Dokładność sprawdzania czasu - do 1 minuty. No i musisz monitorować działanie Joba, żeby się nie zdarzyło, że na przykład przez parę godzin nie działa, bo się wyłączył.
Proponuję więc taki scenariusz

- napisać procedure, która przenosi rekordy starsze niż aktualna data do innej tabeli (to rozwiąże sprawę, jeśli Job nie wykonałby się potem przypadkowo raz czy dwa razy pod rząd).
- W SQL Server Agent stworzyć Joba, który uruchamia procedurę co 1 minutę (częściej się z tego co wiem nie da).
- Zaimplementować mechanizm monitorowania działania Joba, najprostszy to wysłanie maila w przypadku niepowodzenia, ale nie zadziała jeśli padnie np. cała usługa SQL Server Agenta...

Alternatywą jest napisanie własnej usługi, która przenosi rekordy. Wtedy kontrola może odbywać się częściej niż co minutę, a aplikację/stronę internetową można wyposażyć w mechanizmy integracji z serwisem i w przypadku jego awarii zareagować bezpośrednio na stronie.

Pozdrawiam
JArek
Paweł Kwaśny

Paweł Kwaśny PROGRAMISTA JAVA

Temat: [MSSQL] Automatyczne przeniesienie rekordu do innej tabeli

jesli masz duzo danych to mozesz rozwazyc kilka jobow ktore beda pracowac rownolegle na porcjach danych do przerzucenia, jednak to dosc skomplikowane ale daje niezle efekty
Daniel N.

Daniel N. Senior IT Architect,
DBA

Temat: [MSSQL] Automatyczne przeniesienie rekordu do innej tabeli

Jarosław Kędzierski:
...
- W SQL Server Agent stworzyć Joba, który uruchamia procedurę co 1 minutę (częściej się z tego co wiem nie da).
- Zaimplementować mechanizm monitorowania działania Joba, najprostszy to wysłanie maila w przypadku niepowodzenia, ale nie zadziała jeśli padnie np. cała usługa SQL Server Agenta...
...

Pozdrawiam
JArek
Jarku, minimum jest 10 sekund.

===
Pozdrawiam,
Daniel
Jarosław Kędzierski

Jarosław Kędzierski Admin od okienek

Temat: [MSSQL] Automatyczne przeniesienie rekordu do innej tabeli


Pozdrawiam
JArek
Jarku, minimum jest 10 sekund.

===
Pozdrawiam,
Daniel

Dzięki za sprostowanie. Będę już pamiętał :)
JArek
Krzysztof Raczkowski

Krzysztof Raczkowski Stała współpraca,
Logifact-Systems Sp.
z o.o.

Temat: [MSSQL] Automatyczne przeniesienie rekordu do innej tabeli

Daniel N.:
Jarosław Kędzierski:
...
- W SQL Server Agent stworzyć Joba, który uruchamia procedurę co 1 minutę (częściej się z tego co wiem nie da).
- Zaimplementować mechanizm monitorowania działania Joba, najprostszy to wysłanie maila w przypadku niepowodzenia, ale nie zadziała jeśli padnie np. cała usługa SQL Server Agenta...
...

Pozdrawiam
JArek
Jarku, minimum jest 10 sekund.

===
Pozdrawiam,
Daniel


Można również zapętlić procedurę ... żeby wykonywała się N razy + w środku WAITFOR ... Wtedy 'od biedy' może być nawet częściej lub zdarzeniowo

--
Pozdrawiam
K.R.
Paweł B.

Paweł B. architekt baz danych
/ SQL Developer /BI
Developer

Temat: [MSSQL] Automatyczne przeniesienie rekordu do innej tabeli

Jeśli tworząc aukcję wiemy, kiedy się skończy to proponuję przy dodaniu rekordu do joba dodać jednorazowy harmonogram z terminem na datę zakończenia.

Następna dyskusja:

update rekordu w tabeli




Wyślij zaproszenie do