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

我需要知道如何使用 SQLServer 代理作业使 SQL 查询每天运行,并使用所需的最小配置设置。

462945 次浏览
  1. 展开 SQLServer 代理节点,右键单击 SQLServer 代理中的 Jobs 节点并选择 'New Job'

  2. 'New Job'窗口中,在 'General'选项卡上输入作业的名称和描述。

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

  4. 'Steps'窗口中输入一个步骤名称并选择要对其运行查询的数据库。

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

  6. 单击 New Job 窗口左侧的 'Schedule'菜单,输入日程信息(例如每日和时间)。

  7. 单击 '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

选择每日收音机按钮

点击 Ok按钮

然后单击 Action选项卡选择新建。

按钮将 "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"-S ADMIN-PC-i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"放入程序/脚本文本框(确保匹配您的文件路径,并将双引号路径放入 start-> 搜索框中,如果找到,然后单击它,查看备份是否存在)

——上面的路径可以安装100写90 "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"

然后点击确定按钮

脚本将按时执行,您选择的触发器选项卡每天的基础上

好好享受。

要在 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

Schedule SQL Job

使用 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 ;