如何安排一个SQL查询作业每天运行?
我需要知道如何使用最less的必需configuration设置使用SQL Server代理作业每天运行一个SQL查询。
-
展开“SQL Server代理”节点并右键单击“SQL Server代理
'New Job'
节点,然后select'New Job'
-
在
'New Job'
窗口中,在'General'
选项卡上input作业名称和描述。 -
select窗口左侧的
'Steps'
,然后单击底部的'New'
。 -
在
'Steps'
窗口中input步骤名称,然后select要运行查询的数据库。 -
粘贴到要运行到命令窗口中的T-SQL命令,然后单击
'OK'
。 -
点击New Job窗口左边的
'Schedule'
菜单,然后input日程安排信息(例如每天和每个时间)。 -
点击
'OK'
– 这应该是。
(当然,你可以添加其他选项 – 但是我想说的是,你需要设置和安排工作的最低限度)
我在接受的答案中制作了一个animationGIF的步骤。 这是来自MSSQL Server 2012
要在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
这是一个示例代码:
Exec sp_add_schedule @schedule_name = N'SchedulName' @freq_type = 1 @active_start_time = 08300
如果你想每日备份/ /以下的SQL脚本存储在C:\用户\pipe理\桌面\ DBScript \ DBBackUpSQL.sql
DECLARE @pathName NVARCHAR(512), @databaseName NVARCHAR(512) SET @databaseName = 'Databasename' SET @pathName = 'C:\DBBackup\DBData\DBBackUp' + Convert(varchar(8), GETDATE(), 112) + '_' + Replace((Convert(varchar(8), GETDATE(), 108)),':','-')+ '.bak' BACKUP DATABASE @databaseName TO DISK = @pathName WITH NOFORMAT, INIT, NAME = N'', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO
打开任务计划程序
创build任务 – >selectTriggers
选项卡selectNew
。
buttonselect每日单选button
单击Ok
button
然后单击Action
选项卡select新build。
button放在程序中的"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"
-S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
脚本文本框(确保匹配您的文件path,并把双引号的path在开始 – >search框,如果发现然后点击它,看看备份是否存在)
– 上面的path可能是insted 100写90 "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i
"C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
然后点击确定button
脚本将按照您在“触发器”选项卡上每天select的时间执行
好好享受………….