Jobsy w MS SQL Server?

Witam,

muszę zrobić w swojej aplikacji webowej coś takiego, żeby pewna funkcja wywoływała się np. codziennie o północy. Jak coś takiego zrobić? Myślałem, żeby zrobić coś w stylu procedury na bazie… ale jak ona się ma sama wywoływać o jakiejś wybranej przeze mnie porze? Podobno triggery do tego nie służą. Słyszałem o czymś takim jak Jobs i wiem, że gdzieś to jest w SQL Server (chociaż jeszcze nie udało mi się tego znaleźć), tylko czy je mogę do tego wykorzystać czy trzeba coś innego?

A może, skoro to aplikacja webowa, to na nią nałożyć obowiązek odpalania jakiejś funkcji o pewnej porze?

Pozdrawiam

Dodam, że mam SQL Server w wersji Express.

Triggery służą do monitorowania zmian w strukturze bądź zawartości bazy, uruchamiane są w następstwie zdarzeń, a nie co zdefiniowany czas.

Po stronie SQL Servera do tego celu służyć mogą właśnie Joby, opisane tutaj: http://www.sqlteam.com/article/scheduli … er-express

Aplikacja webowa raczej nie odpali Ci jakiejś funkcji co jakiś czas - nie masz gwarancji, że o zadanej porze będzie ona pracowała. Ale możesz sobie napisać zwykłą aplikację albo, co lepsze, usługę systemową w celu realizacji tego zadania.

Dzięki za odpowiedź. Raczej jakiś Job na bazie mi wystarczy. Chodzi tylko o odpalenie pewnej procedury o odpowiedniej porze… Tylko, że tutaj (http://msdn.microsoft.com/en-us/library/ms187910.aspx) jest napisane, że przydałoby się coś takiego jak SQL Server Agent, a w wersji Express tego nie widzę… Ale także znalazłem tego linka co tu wkleiłeś, więc może jakoś to poleci.

Btw, jeżeli mam jakąś bazę na SQL Server w wersji Express (która jest zawarta w jednym pliku) i chcę się przenieść na inną wersję (jakąś Enterprise np.) to wystarczy, że skopiuję ten plik bazy w odpowiednie miejsce? Jest jakieś ryzyko, że nie zadziała? Zresztą chyba mogę mieć dwie wersje SQL Servera na kompie i tylko łączyć się z tą, której będę potrzebował?

Na 90% zadziała. Powinno też zadziałać przy przenoszeniu do nowej wersji SQL Server, czyli np. z 2005 na 2008 (w drugą stronę już niekoniecznie). Będziesz musiał przenieść dwa pliki .mdf i .ldf.

Yep. Po prostu tworzysz kolejną instancję serwera. Sam tego nie robiłem, ale na pewno się da. Tutaj znalazłem jakiś opis dla SQL Server 2005

http://windowshosting.pl/Jak.utworzyc.dwie.instancje.Microsoft.SQL.2005.na.jednym.serwerze. W 2008 będzie podobnie, bo o ile mnie pamięć nie myli tam także w trakcie instalacji można podawać nazwę tworzonej instancji.

Server Agent to usługa - program chodzący w tle i wykonujący pewne zadania. Wydaje mi się, że jest on dostępny także w wersji Express, ale głowy nie dam. Sprawdź w SQL Configuration Manager w zakładce SQL Server Services czy masz dostępną usługę SQL Server Agent. Jeśli nie, to będziesz musiał poszukać innego rozwiązania.

Nie ma czegoś takiego jak “odpowiednie miejsce”, możesz przenieść gdzie chcesz, podłączyć (attach) i będzie chodzić. Oczywiście, żeby móc to zrobić musisz najpierw odłączyć bazę, bo system nie będzie miał dostępu do jej plików.

Wszystko to jest w zasadzie bez sensu - wystarczy zrobić backup (Tasks -> Backup), a w docelowej lokalizacji go przywrócić. Dużo prościej i bezpieczniej.

Nie znalazłem tego Agenta. Dzięki za poradę, backup faktycznie najprostszy, a przejście na wyższą wersję będzie niezbędne z braku tego Agenta…

Pogooglaj, może znajdziesz jakiegoś darmowego “Agenta”. Wyższe wersje SQL Servera to raczej droga zabawa, kupować którąś z nich tylko z powodu Agenta nie ma moim zdaniem sensu.

ssa.png

Jakby nie patrzeć, SQL Server Agent w wersji Express też jest.

EDIT: @down: aha, dzięki za wyjaśnienie.

Niby tak, ale nie da się tego włączyć w wersji Express. Źródło oficjalne: http://msdn.microsoft.com/en-us/library … 00%29.aspx

Zawsze możesz napisać prostą aplikację i podpiąć ją w harmonogramie zadań Windows.

Znalazłem tutaj http://codeguru.pl/FaqList/1,18537/asc/Comments.aspx trzy podejścia do rozwiązania problemu braku Agenta i to w sumie te same, które były proponowane wyżej. Ponieważ wolę nie korzystać z jakiegoś obcego programu, a rozwiązanie z punktu 2 mi nie działa, postanowiłem wykorzystać harmonogram zadań w windowsie i to już jest ok.

Tylko teraz tak, jeżeli kiedyś stronę postawię na własnym serwerze to będę miał dostęp do wszystkiego, może być tam windows i moje harmonogramy. Co jednak się stanie, gdy przeniosę stronę na jakiś zewnętrzny serwer znaleziony w sieci? Nigdy tego nie robiłem, więc jeszcze nie wiem do końca jak to wygląda, ale czy tam będę mógł skorzystać z czegoś takiego? Coś mi się nie wydaje…