Compartilhar via


Executar Procedure no Startup do SQL

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:
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.

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

EXEC XP_READERRORLOG

 
Verificando a inserção na tabela

SELECT * FROM Audit_Server_Start

 
Para desabilitar, utilizamos o parametro OFF

EXEC SP_PROCOPTION usp_AuditServerStart, 'STARTUP', 'OFF'

Para verificar as procedures agendas para execução no startup utilizamos o comando abaixo:

SELECT ROUTINE_NAME
FROM MASTER.INFORMATION_SCHEMA.ROUTINES
WHERE OBJECTPROPERTY(OBJECT_ID(ROUTINE_NAME),'ExecIsStartup') = 1

Referências