{"id":762,"date":"2013-06-02T23:04:10","date_gmt":"2013-06-02T21:04:10","guid":{"rendered":"http:\/\/www.sqlserver.fr\/blog\/?p=762"},"modified":"2020-09-01T10:06:43","modified_gmt":"2020-09-01T08:06:43","slug":"dbcc-errorlog","status":"publish","type":"post","link":"https:\/\/www.sqlserver.fr\/blog\/dbcc-errorlog\/","title":{"rendered":"sp_cycle_errorlog (anciennement DBCC ERRORLOG)"},"content":{"rendered":"<p style=\"text-align: left;\">Tout administrateur syst\u00e8me Windows a d\u00e9j\u00e0 eu l&rsquo;occasion de pester devant une dur\u00e9e de chargement excessive du journal d&rsquo;\u00e9v\u00e9nement Windows (par exemple la rubrique Application ou Syst\u00e8me) parce que la machine \u00e9tait en place depuis pas mal de temps et que l&rsquo;on avait depuis le temps cumul\u00e9 un nombre d&rsquo;\u00e9v\u00e9nements assez important. La limite est bien entendue param\u00e9trable, mais il ne faut pas couper trop court, car on risquerait alors de supprimer des informations encore potentiellement n\u00e9cessaires.<\/p>\n<p>C\u00f4t\u00e9 SQL Server, nous avons aussi une journalisation d&rsquo;\u00e9v\u00e9nements. Celle-ci bascule sur un nouveau sous-ensemble \u00e0 chaque red\u00e9marrage d&rsquo;instance. Mais il n&rsquo;est pas obligatoire de red\u00e9marrer le moteur pour repartir sur un nouveau jeu d&rsquo;enregistrements, et nous allons voir que nous pouvons \u00e9viter les journaux trop longs m\u00eame sur des instances restant actives tr\u00e8s longtemps.<!--more--><\/p>\n<p>Tout d&rsquo;abord, voici un petit rappel concernant les journaux SQL Server. Ils sont notamment accessibles via SQL Server Management Studio de la mani\u00e8re suivante :<\/p>\n<p><a href=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/05\/ObjectExplorer.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-911\" src=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/05\/ObjectExplorer.png\" alt=\"ObjectExplorer\" width=\"387\" height=\"506\" srcset=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/05\/ObjectExplorer.png 387w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/05\/ObjectExplorer-229x300.png 229w\" sizes=\"auto, (max-width: 387px) 100vw, 387px\" \/><\/a><\/p>\n<p>Par d\u00e9faut, nous avons le journal courant et 6 journaux au maximum en archives. Ces fichiers correspondent \u00e0 des fichiers stock\u00e9s dans le sous-dossier MSSQL\\Log de votre dossier d&rsquo;installation de SQL Server.<\/p>\n<p><a href=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/05\/WindowsExplorer.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-912\" src=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/05\/WindowsExplorer-620x430.png\" alt=\"WindowsExplorer\" width=\"620\" height=\"430\" srcset=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/05\/WindowsExplorer-620x430.png 620w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/05\/WindowsExplorer-300x208.png 300w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/05\/WindowsExplorer.png 800w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/a><\/p>\n<p>Il s&rsquo;agit du fichier ERRORLOG (sans suffixe), et des fichiers ERRORLOG.1, ERRORLOG.2, et ainsi de suite.<\/p>\n<p>Par d\u00e9faut, on passe sur un nouveau fichier lors du red\u00e9marrage de l&rsquo;instance. Un nouveau fichier ERRORLOG est cr\u00e9\u00e9, le pr\u00e9c\u00e9dent devient .1, le .1 devient .2, &#8230;, et l&rsquo;ancien .6 est supprim\u00e9.<\/p>\n<p>Le probl\u00e8me est que lorsqu&rsquo;une instance reste active longtemps (pendant plusieurs mois), la volum\u00e9trie du fichier ERRORLOG, et donc entre autre sa dur\u00e9e d&rsquo;ouverture, s&rsquo;allonge de mani\u00e8re d\u00e9raisonn\u00e9e. Certains administrateurs de donn\u00e9es organisent des red\u00e9marrages r\u00e9guliers planifi\u00e9s d&rsquo;instances (par exemple lors du dernier week-end de chaque mois), en synchronisant cela par exemple avec les passages mensuels de hotfix.<\/p>\n<p>Il y a donc une commande d\u00e9di\u00e9e, permettant de \u00ab\u00a0passer au fichier suivant\u00a0\u00bb de mani\u00e8re forc\u00e9e sans avoir besoin de red\u00e9marrer l&rsquo;instance :<\/p>\n<pre class=\"brush: sql; gutter: false; first-line: 1\">sp_cycle_errorlog<\/pre>\n<p>Il est conseill\u00e9 de lancer cette commande de mani\u00e8re planifi\u00e9e r\u00e9guli\u00e8rement, par exemple une fois par jour ou au pire une fois par semaine.<\/p>\n<p>C&rsquo;est bien de faire tourner plus rapidement les fichiers, mais on peut aussi souhaiter garder un certain historique. Si l&rsquo;on effectue un d\u00e9calage de fichier tous les jours, un historique de 6 fichiers ne nous permettrait m\u00eame pas de tenir une semaine. Le nombre de fichiers retenus est pour cela param\u00e9trable via Management Studio, par clic droit sur la branche \u00ab\u00a0SQL Server Logs\u00a0\u00bb vue pr\u00e9c\u00e9demment.<\/p>\n<p><a href=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/06\/ConfigureSQLErrorLog.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-932 aligncenter\" src=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/06\/ConfigureSQLErrorLog-620x556.png\" alt=\"ConfigureSQLErrorLog\" width=\"620\" height=\"556\" srcset=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/06\/ConfigureSQLErrorLog-620x556.png 620w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/06\/ConfigureSQLErrorLog-300x269.png 300w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/06\/ConfigureSQLErrorLog.png 704w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/a><\/p>\n<p>Ainsi, on peut d\u00e9cider de conserver un historique contr\u00f4l\u00e9 de 1, 2 ou 3 mois par exemple en effectuant un d\u00e9calage de fichier quotidiennement. Attention toutefois, les red\u00e9marrages d&rsquo;instance viendront ajouter \u00e0 chaque fois un d\u00e9calage suppl\u00e9mentaire.<\/p>\n<p>A noter enfin que l&rsquo;Agent SQL Server stocke\u00a0lui aussi fonctionne son historique via un jeu de fichiers. Toutefois, le param\u00e9trage est\u00a0diff\u00e9rent. Il est tout d&rsquo;abord\u00a0disponible via le param\u00e9trage de l&rsquo;Agent SQL Server lui-m\u00eame :<\/p>\n<p><a href=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/06\/ConfigureAgentErrorLogs.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-931 aligncenter\" src=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/06\/ConfigureAgentErrorLogs-620x556.png\" alt=\"ConfigureAgentErrorLogs\" width=\"620\" height=\"556\" srcset=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/06\/ConfigureAgentErrorLogs-620x556.png 620w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/06\/ConfigureAgentErrorLogs-300x269.png 300w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/06\/ConfigureAgentErrorLogs.png 704w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/a><\/p>\n<p>Le contenu et l&#8217;emplacement des fichiers est lui aussi param\u00e9trable, par clic droit dans l&rsquo;explorateur d&rsquo;objets sur la branche des journaux de l&rsquo;Agent SQL :<\/p>\n<p><a href=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/06\/ConfigureAgentErrorLog2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2013\/06\/ConfigureAgentErrorLog2-620x556.png\" alt=\"ConfigureAgentErrorLog2\" width=\"620\" height=\"556\" \/><\/a><\/p>\n<p>Ces param\u00e9trages font partie de toutes ces petites choses que l&rsquo;on oublie parfois de mettre en place lors de l&rsquo;installation d&rsquo;un serveur, et qui pourtant nous simplifient bien la vie. Donc \u00e0 noter dans nos tablettes &#8230;<\/p>\n<p><em><span style=\"text-decoration: underline;\">Post Scriptum<\/span> : Sur les versions SQL Server 2000 et pr\u00e9c\u00e9dentes, cette proc\u00e9dure stock\u00e9e syst\u00e8me n&rsquo;existait pas, mais l&rsquo;op\u00e9ration de maintenance \u00e9tait tout de m\u00eame r\u00e9alisable via la commande DBCC ERRORLOG.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tout administrateur syst\u00e8me Windows a d\u00e9j\u00e0 eu l&rsquo;occasion de pester devant une dur\u00e9e de chargement excessive du journal d&rsquo;\u00e9v\u00e9nement Windows (par exemple la rubrique Application ou Syst\u00e8me) parce que la machine \u00e9tait en place depuis pas mal de temps et &hellip; <a href=\"https:\/\/www.sqlserver.fr\/blog\/dbcc-errorlog\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-762","post","type-post","status-publish","format-standard","hentry","category-article_sql"],"_links":{"self":[{"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/posts\/762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/comments?post=762"}],"version-history":[{"count":24,"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/posts\/762\/revisions"}],"predecessor-version":[{"id":1765,"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/posts\/762\/revisions\/1765"}],"wp:attachment":[{"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/media?parent=762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/categories?post=762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/tags?post=762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}