O SQL Server oferece a System Stored Procedure sp_procoption que pode ser utilizada para definir automaticamente a execução de uma procedure ao inicializar o serviço do SQL Server.
Sintaxe:
<pre></pre>
exec sp_procoptionÂ
@ProcName = ['stored procedure name'],Â
@OptionName = 'STARTUP',Â
@OptionValue = [on|off]
-Parâmetro @ProcName - Nome da Procedure
-Parâmetro @OptionName - Única opção válida: STARTUP
-Parâmetro @OptionValue - Define a auto-execução ON/OFF
Para exemplificar, vamos criar um ambiente que irá registrar o startup do SQL.
<pre></pre>
USE MASTER
GO
CREATE TABLE Audit_Server_Start
(
  ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
  StartTime DATETIME NOT NULL DEFAULT GETDATE()Â
)
GO
CREATE PROCEDURE usp_AuditServerStart
AS
INSERT INTO Master.dbo.Audit_Server_Start DEFAULT VALUES
GO
EXEC SP_PROCOPTION usp_AuditServerStart, 'STARTUP', 'ON'
Para testar vamos reiniciar o Serviço do SQL Server
Podemos verificar no Log do SQL a execução da procedure
<pre></pre>
EXEC XP_READERRORLOG
Verificando a inserção na tabela
<pre>SELECT * FROM Audit_Server_Start</pre>
<img src="https://s3-us-west-2.amazonaws.com/ecode10-image/498cbd12-1aa8-4359-afbb-62888be244e1Post36 - Select.JPG">
Para desabilitar, utilizamos o parametro OFF
<pre></pre>
EXEC SP_PROCOPTION usp_AuditServerStart, 'STARTUP', 'OFF'
Para verificar as procedures agendas para execução no startup utilizamos o comando abaixo:
<pre></pre>
SELECT ROUTINE_NAME
FROM MASTER.INFORMATION_SCHEMA.ROUTINES
WHERE OBJECTPROPERTY(OBJECT_ID(ROUTINE_NAME),'ExecIsStartup') = 1