如何安排sql查询的作业每天运行?

Bob*_*j-C 109 sql database sql-server sql-server-2008 sql-job

我需要知道如何使用SQL Server代理作业每天运行SQL查询,并使用最少的必需配置设置.

小智 151

  1. 展开SQL Server代理节点,右键单击SQL Server代理中的"作业"节点,然后选择 'New Job'

  2. 'New Job'窗口中输入作业名称和'General'选项卡上的说明.

  3. 'Steps'在窗口的左侧选择,然后单击'New'底部.

  4. 'Steps'窗口中输入步骤名称,然后选择要对其运行查询的数据库.

  5. 粘贴要在命令窗口中运行的T-SQL命令,然后单击'OK'.

  6. 单击'Schedule'"新建作业"窗口左侧的菜单,然后输入计划信息(例如,每天和每个时间).

  7. 点击'OK'- 应该是它.

(当然,您可以添加其他选项 - 但我会说这是您设置和安排工作所需的最低限度)

  • 毫无疑问,根据您登录的人,您可能根本无法看到SQL Server代理节点...不是每个人都以sa身份登录.进一步(相当干)信息在这里.. http://msdn.microsoft.com/en-us/library/ms188283.aspx (6认同)
  • 也许使用脚本BAT,CMD,Powershell来编程*** (3认同)

S.M*_*son 80

我在接受的答案中制作了动画GIF的步骤.这是来自MSSQL Server 2012

安排SQL作业

  • GIF - 多么有创意!:) (7认同)
  • 这应该是stackoverflow中最受欢迎的答案. (7认同)
  • 要查看菜单树中的 SQL Server 代理区域,您登录的用户需要对 MSDB 数据库具有正确的权限(MSDB 是一个内置数据库,SSMS 将其用于诸如权限之类的事情)。从主树资源管理器转到安全 > 登录 > 您的用户名 > 右键单击​​ > 属性 > 用户映射 > 检查 msdb > 然后在下面检查 SQLAgentOperatorRole (2认同)

Dou*_*mpe 15

要在t-sql中执行此操作,您可以使用以下系统存储过程来安排每日作业.此示例每天凌晨1:00安排.有关各个存储过程的语法和有效参数范围的详细信息,请参阅Microsoft帮助.

DECLARE @job_name NVARCHAR(128), @description NVARCHAR(512), @owner_login_name NVARCHAR(128), @database_name NVARCHAR(128);

SET @job_name = N'Some Title';
SET @description = N'Periodically do something';
SET @owner_login_name = N'login';
SET @database_name = N'Database_Name';

-- Delete job if it already exists:
IF EXISTS(SELECT job_id FROM msdb.dbo.sysjobs WHERE (name = @job_name))
BEGIN
    EXEC msdb.dbo.sp_delete_job
        @job_name = @job_name;
END

-- Create the job:
EXEC  msdb.dbo.sp_add_job
    @job_name=@job_name, 
    @enabled=1, 
    @notify_level_eventlog=0, 
    @notify_level_email=2, 
    @notify_level_netsend=2, 
    @notify_level_page=2, 
    @delete_level=0, 
    @description=@description, 
    @category_name=N'[Uncategorized (Local)]', 
    @owner_login_name=@owner_login_name;

-- Add server:
EXEC msdb.dbo.sp_add_jobserver @job_name=@job_name;

-- Add step to execute SQL:
EXEC msdb.dbo.sp_add_jobstep
    @job_name=@job_name,
    @step_name=N'Execute SQL', 
    @step_id=1, 
    @cmdexec_success_code=0, 
    @on_success_action=1, 
    @on_fail_action=2, 
    @retry_attempts=0, 
    @retry_interval=0, 
    @os_run_priority=0, 
    @subsystem=N'TSQL', 
    @command=N'EXEC my_stored_procedure; -- OR ANY SQL STATEMENT', 
    @database_name=@database_name, 
    @flags=0;

-- Update job to set start step:
EXEC msdb.dbo.sp_update_job
    @job_name=@job_name, 
    @enabled=1, 
    @start_step_id=1, 
    @notify_level_eventlog=0, 
    @notify_level_email=2, 
    @notify_level_netsend=2, 
    @notify_level_page=2, 
    @delete_level=0, 
    @description=@description, 
    @category_name=N'[Uncategorized (Local)]', 
    @owner_login_name=@owner_login_name, 
    @notify_email_operator_name=N'', 
    @notify_netsend_operator_name=N'', 
    @notify_page_operator_name=N'';

-- Schedule job:
EXEC msdb.dbo.sp_add_jobschedule
    @job_name=@job_name,
    @name=N'Daily',
    @enabled=1,
    @freq_type=4,
    @freq_interval=1, 
    @freq_subday_type=1, 
    @freq_subday_interval=0, 
    @freq_relative_interval=0, 
    @freq_recurrence_factor=1, 
    @active_start_date=20170101, --YYYYMMDD
    @active_end_date=99991231, --YYYYMMDD (this represents no end date)
    @active_start_time=010000, --HHMMSS
    @active_end_time=235959; --HHMMSS
Run Code Online (Sandbox Code Playgroud)


efy*_*sis 8

使用T-SQL:我的工作是执行存储过程.您可以轻松更改@command以运行您的SQL.

EXEC msdb.dbo.sp_add_job  
   @job_name = N'MakeDailyJob',   
   @enabled = 1,   
   @description = N'Procedure execution every day' ; 

 EXEC msdb.dbo.sp_add_jobstep  
    @job_name = N'MakeDailyJob',   
    @step_name = N'Run Procedure',   
    @subsystem = N'TSQL',   
    @command = 'exec BackupFromConfig';

 EXEC msdb.dbo.sp_add_schedule  
    @schedule_name = N'Everyday schedule',   
    @freq_type = 4,  -- daily start
    @freq_interval = 1,
    @active_start_time = '230000' ;   -- start time 23:00:00

 EXEC msdb.dbo.sp_attach_schedule  
   @job_name = N'MakeDailyJob',  
   @schedule_name = N'Everyday schedule' ;

 EXEC msdb.dbo.sp_add_jobserver  
   @job_name = N'MakeDailyJob',  
   @server_name = @@servername ;
Run Code Online (Sandbox Code Playgroud)