I agree with Owais and maybe this help:ss = "waitfor delay '000:02:00' insert into t select 5678"cn.Execute "exec spAsyncSQL " & Chr(34) & ss & Chr(34)cn.CloseSet cn = NothingHere this user-defined stored procedure spAsyncSQL (tested on 7.0 andworks under running SQL Server Agent):-- spAsyncSQL Stored Procedure for asynchronous start of T-SQL batchCREATE PROCEDURE spAsyncSQL @tsql varchar(3200) ASset nocount ondeclare @jname varchar(70), @jobid uniqueidentifier, @nt_user_name NVARCHAR(100), @dt datetime, @itime int, @start_date int, @skey nchar(1)set @jobid = NEWID()set @jname=LTRIM(RTRIM('ZZZ Async T-SQL Batch Executer '+convert(varchar(36),@jobid)))set @nt_user_name=IsNull(NT_CLIENT(),SUSER_SNAME())set @skey=N'S'INSERT INTO msdb.dbo.sysjobs (job_id, originating_server, name, enabled, description, start_step_id, category_id, owner_sid, notify_level_eventlog, notify_level_email, notify_level_netsend, notify_level_page, notify_email_operator_id, notify_netsend_operator_id, notify_page_operator_id, delete_level, date_created, date_modified, version_number) VALUES (@jobid, N'(LOCAL)', @jname, 1, NULL, 1, 0, SUSER_SID(), 2, 0, 0, 0, 0, 0, 0, 3, GETDATE(), GETDATE(), 1)INSERT INTO msdb.dbo.sysjobsteps (job_id, step_id, step_name, subsystem, command, flags, additional_parameters, cmdexec_success_code, on_success_action, on_success_step_id, on_fail_action, on_fail_step_id, server, database_name, database_user_name, retry_attempts, retry_interval, os_run_priority, output_file_name, last_run_outcome, last_run_duration, last_run_retries, last_run_date, last_run_time) VALUES (@jobid, 1, 'TheOnlyStep', N'TSQL', @tsql, 0, NULL, 0, 1, 0, 2, 0, NULL, DB_NAME(), NULL, 0, 0, -15/*-1*/, NULL, 0, 0, 0, 0, 0)INSERT INTO msdb.dbo.sysjobservers (job_id, server_id, last_run_outcome, last_outcome_message, last_run_date, last_run_time, last_run_duration) VALUES (@jobid, 0, 5, NULL, 0, 0, 0) IF @@trancount>0 BEGIN set @skey=N'U' set @start_date=datepart(yy,getdate())*10000+datepart(mm,getdate())*100+datepart(dd,getdate()) set @dt=DateAdd(ss,10,GETDATE()) -- Start after 10 sec. It is needed for the job's cashing. -- Increase this number if your transactions are very long. set @itime = datepart(hh,@dt)*10000+datepart(mi,@dt)*100+datepart(ss,@dt) INSERT INTO msdb.dbo.sysjobschedules (job_id, name, enabled, freq_type, freq_interval, freq_subday_type, freq_subday_interval, freq_relative_interval, freq_recurrence_factor, active_start_date, active_end_date, active_start_time, active_end_time, next_run_date, next_run_time) VALUES (@jobid, 'TheOnlySchedule', 1, 1, 0, 0, 0, 0, 0, @start_date, 99991231, @itime, 235959, 0, 0)ENDEXEC master.dbo.xp_sqlagent_notify N'J', @jobid, NULL, NULL, @skey, @nt_user_name, 0, @@trancount