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

<img src="http://www.ecode10.com/artigos/58e07a73-baed-4349-bff3-8626afb24815Post36%20-%20Log.JPG">

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