Tôi cần biết cách thực hiện truy vấn SQL chạy hàng ngày bằng công việc SQL Server Agent, với cài đặt cấu hình bắt buộc tối thiểu.
Tôi cần biết cách thực hiện truy vấn SQL chạy hàng ngày bằng công việc SQL Server Agent, với cài đặt cấu hình bắt buộc tối thiểu.
Câu trả lời:
Mở rộng nút SQL Server Agent và nhấp chuột phải vào nút Jobs trong SQL Server Agent và chọn 'New Job'
Trong 'New Job'
cửa sổ, nhập tên công việc và mô tả trên 'General'
tab.
Chọn 'Steps'
ở phía bên trái của cửa sổ và nhấp vào 'New'
ở dưới cùng.
Trong 'Steps'
cửa sổ, hãy nhập tên bước và chọn cơ sở dữ liệu mà bạn muốn chạy truy vấn.
Dán lệnh T-SQL bạn muốn chạy vào cửa sổ Lệnh và nhấp vào 'OK'
.
Nhấp vào 'Schedule'
menu bên trái của cửa sổ Công việc Mới và nhập thông tin lịch trình (ví dụ: hàng ngày và thời gian).
Nhấp vào 'OK'
- và đó sẽ là nó.
(Tất nhiên bạn có thể thêm các tùy chọn khác - nhưng tôi muốn nói rằng đó là mức tối thiểu bạn cần để thiết lập và lên lịch công việc)
Để thực hiện việc này trong t-sql, bạn có thể sử dụng các thủ tục được lưu trữ trong hệ thống sau đây để lên lịch công việc hàng ngày. Ví dụ này lên lịch hàng ngày lúc 1:00 sáng. Xem trợ giúp của Microsoft để biết chi tiết về cú pháp của các thủ tục được lưu trữ riêng lẻ và phạm vi tham số hợp lệ.
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
Sử dụng T-SQL: Công việc của tôi là thực hiện thủ tục được lưu trữ. Bạn có thể dễ dàng thay đổi @command
để chạy sql của mình.
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 ;
Đây là mã mẫu:
Exec sp_add_schedule
@schedule_name = N'SchedulName'
@freq_type = 1
@active_start_time = 08300
nếu bạn muốn sao lưu hàng ngày // kho tập lệnh sql sau trong 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
mở trình lập lịch tác vụ
tạo tác vụ-> chọn Triggers
tab Chọn New
.
Nút Chọn nút Radio hàng ngày
bấm vào Ok
nút
sau đó nhấp vào Action
tab Chọn Mới.
Nút Đặt "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"
-S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
trong hộp văn bản chương trình / tập lệnh (đảm bảo Phù hợp với đường dẫn tệp của bạn và Đặt đường dẫn được trích dẫn kép vào hộp tìm kiếm-> và nếu nó tìm thấy thì hãy nhấp vào nó và xem bản sao lưu có ở đó hay không )
- đường dẫn trên có thể được ghi 100 ghi 90 "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i
"C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
sau đó bấm vào nút ok
Script sẽ thực thi đúng thời gian mà bạn chọn trên tab Trigger hàng ngày
tận hưởng nó .............