Na vida profissional de um DBA temos algumas necessidades que fogem do cotidiano e que quase sempre temos or necessidade, por exemplo:  Executar um procedimento na inicialização do serviço MSSQLSERVER sem depender  do MSSQLAgent(SQL Agent)?  Procedimento esse que pode ser uma simples inicialização de trace ServerSide ou até configuração em ambientes Cluster Server.

Para tal atividade podemos utilizar o procedimento de sistema sys.sp_procoption para adiciona o procedimento de usuario a lista de inicialização do serviço MSSQLSERVER. Assim o mesmo será iniciado e retorno da execução será mostrada no log do SQL Server.

exemplo:

  1. Modificação na cofiguração do MSSQLSERVER:

exec sp_configure ’show advanced options’, 1
reconfigure
exec sp_configure ’scan for startup procs‘, 1
reconfigure with override

  1. Criação ou definição do seu procedimento armazenado:

create proc Exemplo1
as
begin
exec
xp_msver
return
end

3.  Adicionar o procedimento a lista de inicialização:

exec sys.sp_procoption ‘Exemplo’,’startup’, 1

Apos esses procedimentos seu procedimento será chamado e executado na proxima inicialização do serviço MSSQLSERVER. O resultado no log do SQL Server será algo parecido com:

Consulta dos procedimento com execução na inicialização:

select * from sys.procedures where is_auto_executed = 1

Para a utilização desse recursos temos observar alguns quesitos:

    • O proprietario do procedimento tem de ser dbo
    • O procedimento tem que ser criado na base master
    • O procedimento não pode ter parametros
    • Usuario tem de pertencer ao grupo sysadmin
Até a próxima.