Bob*_*j-C 109 sql database sql-server sql-server-2008 sql-job
我需要知道如何使用SQL Server代理作业每天运行SQL查询,并使用最少的必需配置设置.
小智 151
展开SQL Server代理节点,右键单击SQL Server代理中的"作业"节点,然后选择 'New Job'
在'New Job'窗口中输入作业名称和'General'选项卡上的说明.
'Steps'在窗口的左侧选择,然后单击'New'底部.
在'Steps'窗口中输入步骤名称,然后选择要对其运行查询的数据库.
粘贴要在命令窗口中运行的T-SQL命令,然后单击'OK'.
单击'Schedule'"新建作业"窗口左侧的菜单,然后输入计划信息(例如,每天和每个时间).
点击'OK'- 应该是它.
(当然,您可以添加其他选项 - 但我会说这是您设置和安排工作所需的最低限度)
S.M*_*son 80
我在接受的答案中制作了动画GIF的步骤.这是来自MSSQL Server 2012
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)
使用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)
| 归档时间: |
|
| 查看次数: |
315321 次 |
| 最近记录: |