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
- sp_procoption (Transact-SQL)
- Opção scan for startup procs
- Configurar a opção de configuração de servidor scan for startup procs