Dans SQL Server Management Studio, lorsque je "Afficher l'historique" pour un travail SQL, je n'affiche que les 50 dernières exécutions du travail.
Comment puis-je afficher un journal complet de chaque exécution d'un travail SQL depuis sa création sur le serveur?
Le système de travaux SQL Server limite le nombre total d'entrées de l'historique des travaux à la fois par travail 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é supprimées depuis, mais vous pouvez modifier les propriétés SQL Server Agent et augmenter le nombre d'entrées qui seront désormais enregistrées.
Dans les propriétés de l'Agent SQL Server:
Cela ne vous rendra pas votre historique, mais cela vous aidera dans vos futures requêtes!
Je suis presque sûr que l'historique des travaux est stocké quelque part dans une base de données dédiée dans SQL Server lui-même. Si tel est le cas, vous pouvez utiliser SQL Server Profiler pour intercepter les instructions SQL envoyées par SQL Server Management Studio et trouver les noms des tables, etc.
Votre résultat dépend de deux ou trois choses.
msdb.dbo.sp_purge_jobhistory
procédure stockée avec un paramètre "date la plus ancienne" qui correspond à la période que vous avez sélectionnée.Vous pouvez utiliser la table temporelle pour modifier la conservation des données. Historique des travaux persistant dans l'instance gérée Azure SQL :
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 en temps (ici 1 MONTH
) au lieu du nombre maximal de lignes par travail/taille maximale du journal de l'historique des travaux (lignes).