我需要知道如何使用 SQLServer 代理作业使 SQL 查询每天运行,并使用所需的最小配置设置。
展开 SQLServer 代理节点,右键单击 SQLServer 代理中的 Jobs 节点并选择 'New Job'
'New Job'
在 'New Job'窗口中,在 'General'选项卡上输入作业的名称和描述。
'General'
在窗口的左侧选择 'Steps',然后在底部单击 'New'。
'Steps'
'New'
在 'Steps'窗口中输入一个步骤名称并选择要对其运行查询的数据库。
粘贴要运行到 Command 窗口中的 T-SQL 命令,然后单击 'OK'。
'OK'
单击 New Job 窗口左侧的 'Schedule'菜单,输入日程信息(例如每日和时间)。
'Schedule'
单击 'OK'-应该就是这样。
(当然还有其他选项可以添加-但我要说,这是最低限度,你需要得到一份工作设置和计划)
下面是一个示例代码:
Exec sp_add_schedule @schedule_name = N'SchedulName' @freq_type = 1 @active_start_time = 08300
如果需要每日备份//以下 sql 脚本存储在 C: Users admin Desktop 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
打开任务计划程序
创建任务-> 选择 Triggers选项卡选择 New。
Triggers
New
选择每日收音机按钮
点击 Ok按钮
Ok
然后单击 Action选项卡选择新建。
Action
按钮将 "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"-S ADMIN-PC-i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"放入程序/脚本文本框(确保匹配您的文件路径,并将双引号路径放入 start-> 搜索框中,如果找到,然后单击它,查看备份是否存在)
"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"
"C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
——上面的路径可以安装100写90 "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i
然后点击确定按钮
脚本将按时执行,您选择的触发器选项卡每天的基础上
好好享受。
要在 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
我制作了一个动画 GIF 的步骤中接受的答案。这是从 MSSQLServer2012
使用 T-SQL: 我的工作是执行存储过程。您可以很容易地更改 @command来运行 sql。
@command
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 ;