Jak uruchomić procedurę zaraz po uruchomieniu usługi SQL Server?

28-paź-2011

Można co najmniej na dwa sposoby:

  1. Poprzez sp_procoption
    lub
  2. Poprzez SQL Server Agenta

Ale po kolei:

1. Użyjemy specjalnej procedury sp_procoption, która właśnie do tego celu została stworzona:

  • Pozwól procedurze sp_configure wyświetlać opcje zaawansowane:
    sp_configure 'show advanced options’, 1
    reconfigure
  • Sprawdź/włącz uruchamianie procedur startowych:
    sp_configure 'scan for startup procs’,1
    reconfigure
  • Utwórz swoją procedurę. Pamiętaj, że procedura uruchomi się natychmiast po zakończeniu procesu otwarcia bazy danych master i będzie pracować właśnie w tej bazie danych. Sama procedura też musi być utworzona w bazie master, np. niech będzie to procedura, któa do tabelki zapisze dokładny czas startu SQL serwera:
    USE master
    GO
    CREATE TABLE MyLog
    (start Datetime2)
    GO
    CREATE PROCEDURE WriteStart
    AS
    INSERT INTO MyLog VALUES(SysDateTime())
    GO
  • Oznacz tę procedurę jako startową:
    sp_procoption N’WriteStart’, 'startup’, 'on’
  • Potem zrestartuj serwer i sprawdź zawartość tabelki MyLog

 

2. Użyjemy SQL Server Agenta:

  • Utwórz swoją procedurę
  • Utwórz JOB, w którym wywołujesz tę procedurę
  • Zmień w Schedule dla tego JOB-a tzw. Schedule Type na „Start automatically when sql server agent starts”. Powoduje to, że procedura uruchomi się po uruchomieniu SQL Server Agenta, który z kolei startuje automatycznie zaraz po uruchomieniu SQL Servera.  Może to być o tyle wygodniejsze, że wtedy dostępne masz już wszystkie bazy danych, a nie tylko master.

Komentarze:

  1. Mobilo » Blog Archive » wylistowanie procedur zarejetrowanych przez sp_procoption napisał,

    […] pisałem we wcześniejszym wpisie (dwa lata temu!), możliwe jest zarejestrowanie procedur, które mają się automatycznie […]

Autor: Rafał Kraik