I would be careful about just scheduling a proc for each message that you want to send. What happens if the server crashes or is reset. An approach you may want to take is having a database table of when/what procs are needing to be executed. Then have one scheduled proc that pops the next event off the db stack of jobs and schedules that job in a detached thread. Then when actually processing job remove that job from the stack. You would need to make sure when adding any new jobs that it may take priority over the next scheduled job.