Sql-Server-2012
是否可以查詢作業計劃描述?
正在整理一個腳本來分析所有活動的作業,我幾乎擁有我需要的一切,但如果可能的話,我也希望能夠查詢時間表描述。這可能嗎?我可以從中查詢名稱和 ID,
msdb.dbo.sysschedules
但它似乎沒有時間表描述。我在哪裡可以找到這些資訊?
您可以通過呼叫另一個系統過程來使用
sp_help_jobschedule
which 返回.schedule_description``sp_get_schedule_description
exec sp_help_jobschedule @job_name = 'Your Job Name', @include_description = 1
在游標中滾動它可能會更快,而不是分解那個系統過程
描述實際上不是儲存在數據庫中的值。它是從 dbo.sysschedules 中的值動態派生的。根據 scsimon 的回答,您可以使用 sp_help_jobschedule,或者只在游標中使用 sp_help_schedule 來獲取描述。
像這樣的東西。
CREATE TABLE #tmp (schedule_id INT IDENTITY(1, 1) NOT NULL, schedule_uid UNIQUEIDENTIFIER NOT NULL, schedule_name SYSNAME NOT NULL, enabled INT NOT NULL, freq_type INT NOT NULL, freq_interval INT NOT NULL, freq_subday_type INT NOT NULL, freq_subday_interval INT NOT NULL, freq_relative_interval INT NOT NULL, freq_recurrence_factor INT NOT NULL, active_start_date INT NOT NULL, active_end_date INT NOT NULL, active_start_time INT NOT NULL, active_end_time INT NOT NULL, date_created DATETIME NOT NULL, schedule_description NVARCHAR(100) NOT NULL, job_count NVARCHAR(1) NOT NULL ); DECLARE @id INT; DECLARE c_sched CURSOR LOCAL FOR SELECT schedule_id FROM msdb.dbo.sysschedules; OPEN c_sched; WHILE 1 = 1 BEGIN FETCH NEXT FROM c_sched INTO @id; INSERT INTO #tmp (schedule_id, schedule_uid, schedule_name, enabled, freq_type, freq_interval, freq_subday_type, freq_subday_interval, freq_relative_interval, freq_recurrence_factor, active_start_date, active_end_date, active_start_time, active_end_time, date_created, schedule_description, job_count ) EXEC msdb.dbo.sp_help_schedule @schedule_id = @id, @include_description = 1; IF @@FETCH_STATUS < 0 BREAK; END; CLOSE c_sched; DEALLOCATE c_sched; SELECT * FROM #tmp;