使用查询/代码动态创建SQL作业
我正在研究一个投标系统 当竞价时间开始时,人们竞价,当竞价时间结束时,他们得到结果 是否可以使用查询创建SQL作业 我想做的是,一旦投标时间结束, 我想更新每个投标人的记录谁是赢家或输家 所以,我想到的是,当管理员设置投标的开始日期和结束日期时,我希望动态创建一个计划作业,该作业将自动运行存储的过程,当日期等于结束日期时,该过程将更新每个记录 可能吗 我想的另一种方式是,在竞价页面上放置一个检查器,该检查器将不断与数据库检查竞价时间,如果它检测到竞价已结束,它将自动执行一个存储过程,更新每个用户记录?这个方法让我害怕的是,如果很多用户正在访问这个页面,那么现在很多用户会调用这个存储过程 非常感谢您的建议使用查询/代码动态创建SQL作业,sql,sql-server,Sql,Sql Server,我正在研究一个投标系统 当竞价时间开始时,人们竞价,当竞价时间结束时,他们得到结果 是否可以使用查询创建SQL作业 我想做的是,一旦投标时间结束, 我想更新每个投标人的记录谁是赢家或输家 所以,我想到的是,当管理员设置投标的开始日期和结束日期时,我希望动态创建一个计划作业,该作业将自动运行存储的过程,当日期等于结束日期时,该过程将更新每个记录 可能吗 我想的另一种方式是,在竞价页面上放置一个检查器,该检查器将不断与数据库检查竞价时间,如果它检测到竞价已结束,它将自动执行一个存储过程,更新每个用户
sp_add_jobstep [ @job_id = ] job_id | [ @job_name = ] 'job_name'
[ , [ @step_id = ] step_id ]
{ , [ @step_name = ] 'step_name' }
[ , [ @subsystem = ] 'subsystem' ]
[ , [ @command = ] 'command' ]
[ , [ @additional_parameters = ] 'parameters' ]
[ , [ @cmdexec_success_code = ] code ]
[ , [ @on_success_action = ] success_action ]
[ , [ @on_success_step_id = ] success_step_id ]
[ , [ @on_fail_action = ] fail_action ]
[ , [ @on_fail_step_id = ] fail_step_id ]
[ , [ @server = ] 'server' ]
[ , [ @database_name = ] 'database' ]
[ , [ @database_user_name = ] 'user' ]
[ , [ @retry_attempts = ] retry_attempts ]
[ , [ @retry_interval = ] retry_interval ]
[ , [ @os_run_priority = ] run_priority ]
[ , [ @output_file_name = ] 'file_name' ]
[ , [ @flags = ] flags ]
[ , { [ @proxy_id = ] proxy_id
| [ @proxy_name = ] 'proxy_name' } ]
sp_add_jobstep [ @job_id = ] job_id | [ @job_name = ] 'job_name'
[ , [ @step_id = ] step_id ]
{ , [ @step_name = ] 'step_name' }
[ , [ @subsystem = ] 'subsystem' ]
[ , [ @command = ] 'command' ]
[ , [ @additional_parameters = ] 'parameters' ]
[ , [ @cmdexec_success_code = ] code ]
[ , [ @on_success_action = ] success_action ]
[ , [ @on_success_step_id = ] success_step_id ]
[ , [ @on_fail_action = ] fail_action ]
[ , [ @on_fail_step_id = ] fail_step_id ]
[ , [ @server = ] 'server' ]
[ , [ @database_name = ] 'database' ]
[ , [ @database_user_name = ] 'user' ]
[ , [ @retry_attempts = ] retry_attempts ]
[ , [ @retry_interval = ] retry_interval ]
[ , [ @os_run_priority = ] run_priority ]
[ , [ @output_file_name = ] 'file_name' ]
[ , [ @flags = ] flags ]
[ , { [ @proxy_id = ] proxy_id
| [ @proxy_name = ] 'proxy_name' } ]
我认为,一旦投标时间结束,通知投标人的系统是更好的方法,原因如下:
- 因为它是每次投标一次,而不是每次投标多次调用,并且不会影响系统性能
- 由于它是由系统驱动的,用户不能试图用多个不必要的调用使系统过载李>
- 为每一次投标创建一个动态作业,将使系统拥有大量作业,并且难以维护
- 一旦工作完成,您需要有一个单独的内部管理脚本来清理工作
- 即使您对30秒的延迟没有问题,您甚至可以安排多达30秒的作业,这将看到过去30秒内完成的投标,并向投标人发送更新。我不知道,这怎么可能减少
我认为,一旦投标时间结束,通知投标人的系统是更好的方法,原因如下:
- 因为它是每次投标一次,而不是每次投标多次调用,并且不会影响系统性能
- 由于它是由系统驱动的,用户不能试图用多个不必要的调用使系统过载李>
- 为每一次投标创建一个动态作业,将使系统拥有大量作业,并且难以维护
- 一旦工作完成,您需要有一个单独的内部管理脚本来清理工作
- 即使您对30秒的延迟没有问题,您甚至可以安排多达30秒的作业,这将看到过去30秒内完成的投标,并向投标人发送更新。我不知道,这怎么可能减少
您可以对SQL代理作业中的过程执行以下操作以动态运行。。我不确定SQL代理运行dynamicallyYes的能力。可以使用t-sql创建sql作业。管理员设置投标的开始日期和结束日期时,为什么要创建计划作业。当管理员设置投标日期时,它不能同时执行存储过程吗?日程安排工作的目的是什么?谢谢你的回复@Avi如果我运行一个每秒运行一次的sql作业,这是不是很糟糕?它将检查投标结束日期和时间?如果日期等于结束日期时间。它将调用存储的proc.yes。这很糟糕。你正在消耗资源。当管理员设置结束时,最好在同一流程中执行此操作date@Squirrel谢谢你的回复。我想做的是,一旦投标时间结束,它将自动更新所有投标人的记录。这就是我计划动态创建计划作业的原因。很抱歉,如果有问题,您可以对SQL代理作业中的过程执行以下操作以动态运行。。我不确定SQL代理运行dynamicallyYes的能力。可以使用t-sql创建sql作业。管理员设置投标的开始日期和结束日期时,为什么要创建计划作业。当管理员设置投标日期时,它不能同时执行存储过程吗?日程安排工作的目的是什么?谢谢你的回复@Avi如果我运行一个每秒运行一次的sql作业,这是不是很糟糕?它将检查投标结束日期和时间?如果日期等于结束日期时间。它将调用存储的proc.yes。这很糟糕。你正在消耗资源。当管理员设置结束时,最好在同一流程中执行此操作date@Squirrel谢谢你的回复。我想做的是,一旦投标时间结束,它将自动更新所有投标人的记录。这就是我计划动态创建计划作业的原因。对不起,如果你不明白的话,谢谢你的剧本,先生。我会尝试一下,但我突然意识到,没有必要的许可,这是不可能做到的-,-谢谢你的剧本,先生。我会尝试一下,但我突然意识到,没有必要的许可,这是不可能做到的-,-谢谢你的回复,先生。当你说系统通知投标人时,它是由管理员调用的吗?如果是的话,这可能会奏效。再次感谢,先生。我的意思是,安排静态作业将检查是否出价
-- creates a job step that uses Transact-SQL
USE msdb;
GO
EXEC sp_add_jobstep
@job_name = N'Weekly Sales Data Backup',
@step_name = N'Set database to read only',
@subsystem = N'TSQL',
@command = N'ALTER DATABASE SALES SET READ_ONLY',
@retry_attempts = 5,
@retry_interval = 5 ;
GO
sp_add_jobstep [ @job_id = ] job_id | [ @job_name = ] 'job_name'
[ , [ @step_id = ] step_id ]
{ , [ @step_name = ] 'step_name' }
[ , [ @subsystem = ] 'subsystem' ]
[ , [ @command = ] 'command' ]
[ , [ @additional_parameters = ] 'parameters' ]
[ , [ @cmdexec_success_code = ] code ]
[ , [ @on_success_action = ] success_action ]
[ , [ @on_success_step_id = ] success_step_id ]
[ , [ @on_fail_action = ] fail_action ]
[ , [ @on_fail_step_id = ] fail_step_id ]
[ , [ @server = ] 'server' ]
[ , [ @database_name = ] 'database' ]
[ , [ @database_user_name = ] 'user' ]
[ , [ @retry_attempts = ] retry_attempts ]
[ , [ @retry_interval = ] retry_interval ]
[ , [ @os_run_priority = ] run_priority ]
[ , [ @output_file_name = ] 'file_name' ]
[ , [ @flags = ] flags ]
[ , { [ @proxy_id = ] proxy_id
| [ @proxy_name = ] 'proxy_name' } ]