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?
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
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.
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.
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…