Comment puis-je voir L'historique complet des emplois de SQL?

Dans SQL Server Management Studio, quand je "Afficher l'Historique" pour un Travail SQL, je ne suis montré les 50 dernières exécutions de la Tâche.

Comment puis-je voir un journal complet de chaque exécution D'une tâche SQL depuis qu'elle a été créée sur le serveur?

23
demandé sur Lukasz Szozda 2011-10-13 16:49:18

4 réponses

le système de tâches SQL Server limite le nombre total d'entrées de l'historique des tâches à la fois par tâche et sur l'ensemble du système. Ces informations sont stockées dans la base de données MSDB.

évidemment, vous ne pourrez pas revenir en arrière et voir les informations qui ont été jetées depuis, mais vous pouvez changer le SQL Server Agent propriétés et d'augmenter le nombre d'entrées qui seront enregistrées à partir de maintenant.

dans L'Agent SQL Server Propriétés:

  • Sélectionnez Histoire page
  • modifier la "taille maximale du journal de l'historique des emplois (rangées) "et la" taille maximale des rangées de l'historique des emplois par emploi " pour convenir, ou modifier la façon dont les données historiques des emplois sont supprimées en fonction de leur âge.

il ne vous rendra pas votre histoire, mais il aidera avec vos futures requêtes!

35
répondu Jeremy Smyth 2011-10-13 12:53:59

je suis presque sûr que l'historique de travail est stocké quelque part dans une base de données dédiée dans le serveur SQL lui-même. Si c'est le cas, vous pouvez utiliser SQL Server Profiler pour intercepter les déclarations SQL envoyées par SQL Server Management Studio et trouver des noms de tables, etc.

4
répondu Anton Gogolev 2011-10-13 12:52:41

votre résultat dépend de deux choses.

  1. ce que vous avez défini vos paramètres "taille limite de l'historique du journal des travaux" et " supprimer automatiquement l'historique des agents "[clic droit sur Agent | propriétés | historique SQL] et
  2. si vous effectuez ou non une tâche de "nettoyage de L'Historique" Dans un Plan de Maintenance (ou manuellement de cette façon). La tâche MP exécute le msdb.dbo.sp_purge_jobhistory procédure stockée avec un "plus ancien" paramètre qui correspond à la période que vous avez sélectionné.
3
répondu Tony Covarrubias 2012-09-23 09:09:56

vous pouvez utiliser la Table temporelle pour modifier la rétention des données. la Persistance de l'histoire de job dans Azure SQL Géré Exemple:

ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD StartTime DATETIME2 NOT NULL DEFAULT ('19000101 00:00:00.0000000')

ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD EndTime DATETIME2 NOT NULL DEFAULT ('99991231 23:59:59.9999999')

ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD PERIOD FOR SYSTEM_TIME (StartTime, EndTime)

ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD CONSTRAINT PK_sysjobhistory PRIMARY KEY (instance_id, job_id, step_id)

ALTER TABLE [msdb].[dbo].[sysjobhistory]
SET(SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[sysjobhistoryall],
    DATA_CONSISTENCY_CHECK = ON, HISTORY_RETENTION_PERIOD = 1 MONTH))

select * from msdb.dbo.sysjobhistoryall

cette approche permet de définir la période de rétention comme temps (ici 1 MONTH) au lieu du nombre maximum de lignes par emploi/xaximum.

0
répondu Lukasz Szozda 2018-09-20 18:01:49