Sql-Server-2005
SQL 代理作業僅顯示為作業 ID
SQL Server 2005,我在 SSMS 的 SQL Agent>jobs 節點中看到大約 100 個“作業”。它們顯示為十六進製字元串,而不是真實姓名:
如果我查詢 msdb..sysjobs,我會看到一個小得多的作業列表及其對應的 JobName。
那麼這些工作是什麼,我怎樣才能讓它們顯示為他們的真實工作名稱而不是 JobID?
謝謝,彼得
SQL Server 2005,我在 SSMS 的 SQL Agent>jobs 節點中看到大約 100 個“作業”。它們顯示為十六進製字元串,而不是真實姓名:
它們來自報告服務訂閱。
下面的 SQL 將根據實際報告為您提供作業名稱列表
select ScheduleID ,Path ,name ,s.Description from ReportServer.dbo.catalog c inner join ReportServer.dbo.Subscriptions s on c.ItemID = s.Report_OID inner join ReportServer.dbo.ReportSchedule rs on rs.SubscriptionID = s.SubscriptionID
更好(從這個連結得到它):
創建 SQL Server 代理作業以控制報告的計劃執行,並將其儲存在 MSDB 數據庫的 sysjobs 和 sysjobsteps 中。代理作業名稱是一個代表 ScheduleId 的 guid 值(是的,如果您還沒有註意到,這會使您的代理作業列表與一堆 guid 雜亂無章,使您的非訂閱作業難以工作,我們正在聽到你的聲音:)。
select 'Report' = c.Path ,'Subscription' = s.Description ,'SubscriptionOwner' = uo.UserName ,'SubscriptionModBy' = um.UserName ,'SubscriptionModDate' = s.ModifiedDate ,'ProcessStart' = dateadd(hh, DATEDIFF(hh, Getutcdate(), Getdate()), n.ProcessStart) ,'NotificationEntered' = dateadd(hh, DATEDIFF(hh, Getutcdate(), Getdate()), n.NotificationEntered) ,'ProcessAfter' = dateadd(hh, DATEDIFF(hh, Getutcdate(), Getdate()), n.ProcessAfter) ,n.Attempt ,'SubscriptionLastRunTime' = dateadd(hh, DATEDIFF(hh, Getutcdate(), Getdate()), n.SubscriptionLastRunTime) ,n.IsDataDriven ,'ProcessHeartbeat' = dateadd(hh, DATEDIFF(hh, Getutcdate(), Getdate()), n.ProcessHeartbeat) ,n.Version ,n.SubscriptionID from Notifications n inner join Subscriptions s on n.SubscriptionID = s.SubscriptionID inner join catalog c on c.ItemID = n.ReportID inner join Users uo on uo.UserID = s.OwnerID inner join Users um on um.UserID = s.ModifiedByID