Można co najmniej na dwa sposoby:
- Poprzez sp_procoption
lub - 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:
[…] pisałem we wcześniejszym wpisie (dwa lata temu!), możliwe jest zarejestrowanie procedur, które mają się automatycznie […]