ฉันต้องการทราบวิธีทำให้แบบสอบถาม SQL ทำงานทุกวันโดยใช้งาน SQL Server Agent โดยมีการตั้งค่าการกำหนดค่าขั้นต่ำที่จำเป็น
ฉันต้องการทราบวิธีทำให้แบบสอบถาม SQL ทำงานทุกวันโดยใช้งาน SQL Server Agent โดยมีการตั้งค่าการกำหนดค่าขั้นต่ำที่จำเป็น
คำตอบ:
ขยายโหนด SQL Server Agent และคลิกขวาที่โหนดงานใน SQL Server Agent และเลือก 'New Job'
ใน'New Job'
หน้าต่างให้ป้อนชื่องานและคำอธิบายบน'General'
แท็บ
เลือก'Steps'
ทางด้านซ้ายมือของหน้าต่างแล้วคลิก'New'
ที่ด้านล่าง
ใน'Steps'
หน้าต่างให้ป้อนชื่อขั้นตอนและเลือกฐานข้อมูลที่คุณต้องการให้คิวรีรัน
วางคำสั่ง T-SQL 'OK'
คุณต้องการที่จะวิ่งเข้ามาในหน้าต่างคำสั่งและคลิก
คลิกที่'Schedule'
เมนูทางด้านซ้ายของหน้าต่างงานใหม่และป้อนข้อมูลกำหนดการ (เช่นรายวันและเวลา)
คลิก'OK'
- และนั่นควรจะเป็น
(แน่นอนว่ามีตัวเลือกอื่น ๆ ที่คุณสามารถเพิ่มได้ แต่ฉันจะบอกว่านั่นคือขั้นต่ำที่คุณต้องมีเพื่อตั้งค่างานและกำหนดเวลา)
ในการทำสิ่งนี้ใน t-sql คุณสามารถใช้โพรซีเดอร์ที่ระบบจัดเก็บไว้ต่อไปนี้เพื่อกำหนดเวลางานประจำวัน ตัวอย่างนี้กำหนดเวลาทุกวันเวลา 01: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
การใช้ 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 ;
ถ้าคุณต้องการสำรองข้อมูลรายวัน // ตามเก็บสคริปต์ 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
เปิดตัวกำหนดตารางเวลางาน
สร้าง task-> เลือกแท็บเลือกTriggers
New
ปุ่มเลือกปุ่ม Daily Radio
คลิกOk
ปุ่ม
จากนั้นคลิกAction
แท็บเลือกใหม่
ปุ่มใส่"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"
-S ADMIN-PC -i "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"
จากนั้นคลิกปุ่มตกลง
สคริปต์จะดำเนินการตามเวลาที่คุณเลือกบนแท็บ Trigger ในแต่ละวัน
สนุกกับมัน.............
นี่คือโค้ดตัวอย่าง:
Exec sp_add_schedule
@schedule_name = N'SchedulName'
@freq_type = 1
@active_start_time = 08300