Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用查询/代码动态创建SQL作业_Sql_Sql Server - Fatal编程技术网

使用查询/代码动态创建SQL作业

使用查询/代码动态创建SQL作业,sql,sql-server,Sql,Sql Server,我正在研究一个投标系统 当竞价时间开始时,人们竞价,当竞价时间结束时,他们得到结果 是否可以使用查询创建SQL作业 我想做的是,一旦投标时间结束, 我想更新每个投标人的记录谁是赢家或输家 所以,我想到的是,当管理员设置投标的开始日期和结束日期时,我希望动态创建一个计划作业,该作业将自动运行存储的过程,当日期等于结束日期时,该过程将更新每个记录 可能吗 我想的另一种方式是,在竞价页面上放置一个检查器,该检查器将不断与数据库检查竞价时间,如果它检测到竞价已结束,它将自动执行一个存储过程,更新每个用户

我正在研究一个投标系统

当竞价时间开始时,人们竞价,当竞价时间结束时,他们得到结果

是否可以使用查询创建SQL作业

我想做的是,一旦投标时间结束, 我想更新每个投标人的记录谁是赢家或输家

所以,我想到的是,当管理员设置投标的开始日期和结束日期时,我希望动态创建一个计划作业,该作业将自动运行存储的过程,当日期等于结束日期时,该过程将更新每个记录

可能吗

我想的另一种方式是,在竞价页面上放置一个检查器,该检查器将不断与数据库检查竞价时间,如果它检测到竞价已结束,它将自动执行一个存储过程,更新每个用户记录?这个方法让我害怕的是,如果很多用户正在访问这个页面,那么现在很多用户会调用这个存储过程

非常感谢您的建议

  • 在对象资源管理器中,连接到数据库引擎的实例

  • 在标准栏上,单击“新建查询”

  • 将以下示例复制并粘贴到查询窗口中,然后单击执行

  • 完成sp_添加_作业步骤参数列表

    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_添加_作业步骤参数列表

    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' } ]