Mladen Prajdić Blog

Blog about stuff and things and stuff. Mostly about SQL server and .Net

SQL Server: How to run a stored procedure at SQL Server start-up

This is acctually quite simple. There is 'startup' option that you can set to the procedure.

There are a few limitations though:

 - your stored pricedure must reside in the [master] database

 - it's owner must be dbo

 - it musn't have any input or output parameters

 

Here is some sample code: 

USE master;
GO
-- first set the server to show advanced options
EXEC sp_configure 'show advanced option', '1';
RECONFIGURE
-- then set the scan for startup procs to 1
EXEC sp_configure 'scan for startup procs', '1';
RECONFIGURE

IF OBJECT_ID('spTest') IS NOT NULL DROP PROC spTest GO – crate a test stored procedure CREATE PROC spTest AS – just create a sample database EXEC('CREATE database db1')

GO – set it to run at sql server start-up exec sp_procoption N'spTest', 'startup', 'on'

 

Note that each stored procedure run at start up takes up one worker thread until finished. So if you want to run multiple sprocs at runtime

and parallelism doesn't matter create one sproc that executes all others.

 

kick it on DotNetKicks.com

Legacy Comments


Malaravan
2007-11-23
re: SQL Server: How to run a stored procedure at SQL Server start-up
its nice...
if stored procedure return the value like function?

riaz
2008-01-16
re: SQL Server: How to run a stored procedure at SQL Server start-up
Very useful, thanks!

LinuxLars
2008-02-20
re: SQL Server: How to run a stored procedure at SQL Server start-up
Question - if this is a startup procedure, does it run BEFORE anything else gets in?

Mladen
2008-02-20
re: SQL Server: How to run a stored procedure at SQL Server start-up
and by anything else you mean what?

vince
2008-11-04
re: SQL Server: How to run a stored procedure at SQL Server start-up
Use this code in 2005 to tell you which procs are set to run at startup
select name
from sys.objects
where type = 'p'
and OBJECTPROPERTY(object_id, 'ExecIsStartup') = 1

ajitesh malhotra
2010-02-11
re: SQL Server: How to run a stored procedure at SQL Server start-up
ALter proc [dbo].[dbspace_build_sql] as
declare @DBname varchar(36),@sql_text_out varchar(255),@sql_text_out2 varchar(255)
declare DBname_cursor cursor
for
select name from master..sysdatabases where
DATABASEPROPERTY(name, 'IsSuspect') != 1 and DATABASEPROPERTY(name, 'IsOffline') != 1
and DATABASEPROPERTY(name, 'IsNotRecovered') != 1 and DATABASEPROPERTY(name, 'IsInStandBy') != 1
and DATABASEPROPERTY(name, 'IsInRecovery') != 1 and DATABASEPROPERTY(name, 'IsInLoad') != 1
and DATABASEPROPERTY(name, 'IsDetached') != 1 and DATABASEPROPERTY(name, 'IsEmergencyMode') != 1
and name <> 'tempdb'
order by name
set nocount on
open DBname_cursor
fetch DBname_cursor into @DBname
while @@fetch_status = 0
begin
select @sql_text_out ='use '+@DBname+''
print @sql_text_out
select @sql_text_out ='go'
print @sql_text_out
select @sql_text_out ='exec sp_DBA_DATABASE_USAGE'
print @sql_text_out

fetch DBname_cursor into @DBname
end
close DBname_cursor
deallocate DBname_cursor


how to execute this query pls tell me ...