{"id":490,"date":"2010-02-05T13:10:31","date_gmt":"2010-02-05T12:10:31","guid":{"rendered":"http:\/\/blog.capdata.fr\/?p=490"},"modified":"2023-01-04T09:32:09","modified_gmt":"2023-01-04T08:32:09","slug":"sqldiag-episode-1","status":"publish","type":"post","link":"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/","title":{"rendered":"SQLDIAG (\u00e9pisode 1)"},"content":{"rendered":"<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F490&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F490&#038;title=SQLDIAG%20%28%C3%A9pisode%201%29\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=SQLDIAG%20%28%C3%A9pisode%201%29&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F490\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a><p><span style=\"color: #333333;\">D\u00e9but d&#8217;une assez longue s\u00e9rie de posts sur l&#8217;utilitaire SQLDIAG et ses petits camarades de jeu PSSDIAG, SQLNexus et autres RML Utilities&#8230;<\/span><\/p>\n<p><span style=\"color: #333333;\"><strong>SQLDIAG <\/strong>est un utilitaire en mode ligne de commandes qui est livr\u00e9 avec SQL Server depuis plus de 10 ans maintenant. Il est bien cach\u00e9, peu dfhe gens l&#8217;utilisent mais il peut \u00eatre d&#8217;une puissance redoutable. Il est capable de lancer en m\u00eame temps:<\/span><\/p>\n<ul>\n<li><span style=\"color: #333333;\"><em>Une collecte perfmon.<\/em><\/span><\/li>\n<li><span style=\"color: #333333;\"><em>Une trace type SQL Trace.<\/em><\/span><\/li>\n<li><span style=\"color: #333333;\"><em>Une collecte des journaux d&#8217;\u00e9v\u00e8nements.<\/em><\/span><\/li>\n<li><span style=\"color: #333333;\"><em>Un inventaire complet\u00a0 de la machine bas\u00e9 sur msinfo32.<\/em><\/span><\/li>\n<li><span style=\"color: #333333;\"><em>Un inventaire complet de l&#8217;instance.<\/em><\/span><\/li>\n<\/ul>\n<p><span style=\"color: #333333;\">Il permettra m\u00eame de corr\u00e9ler des traces de compteurs perfmon et le tra\u00e7age de sessions SQL dans Profiler. Il se base sur un fichier de configuration au format XML. Il en existe un par d\u00e9faut (SQLDiag.xml) qui se trouve sous ~Tools\\Binn, mais il est tr\u00e8s exhaustif\u00a0 et trace tous les compteurs et \u00e9v\u00e8nements disponibles. L&#8217;inconv\u00e9nient de l&#8217;utiliser est qu&#8217;il cr\u00e9\u00e9 des traces p\u00e9nalisantes et tr\u00e8s encombrantes, plusieurs dizaines de Gb de fichiers textes, blg, trc, etc&#8230; Donc on a int\u00e9r\u00eat \u00e0 se cr\u00e9er son petit fichier XML pour ne capturer que ce dont on aura besoin.<\/span><\/p>\n<h2><span style=\"color: #333333;\">SQLDiag.xml<br \/>\n<\/span><\/h2>\n<p><span style=\"color: #333333;\">Dans ce premier \u00e9pisode, nous allons donc parler de la structure de ce fichier XML. Elle ressemble vu d&#8217;en haut \u00e0 ceci:<\/span><\/p>\n<pre><span style=\"color: #0000ff;\">&lt;Collection&gt;\r\n&lt;Machines&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;Machine name=\".\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;MachineCollectors&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;<span style=\"color: #008000;\">EventlogCollector<\/span> \/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;<span style=\"color: #008000;\">PerfmonCollector<\/span> \/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/MachineCollectors&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;Instances&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;Instance&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;Collectors&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;<span style=\"color: #008000;\">SqldiagCollector<\/span> \/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  &lt;<span style=\"color: #008000;\">BlockingCollector<\/span> \/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0   &lt;<span style=\"color: #008000;\">ProfilerCollector<\/span> \/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0    &lt;<span style=\"color: #008000;\">CustomDiagnostics<\/span> \/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  &lt;\/Collectors&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  &lt;\/Instance&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0   &lt;\/Instances&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/Machine&gt;\r\n&lt;\/Machines&gt;\r\n&lt;\/Collection&gt;<\/span><\/pre>\n<p><span style=\"color: #000000;\"><span style=\"color: #333333;\">Chaque balise <\/span><span style=\"color: #008000;\"><strong>%<\/strong><em><strong>Collector<\/strong><\/em><span style=\"color: #333333;\"> <\/span><\/span><span style=\"color: #333333;\">d\u00e9limite la zone de param\u00e9trage de chaque <strong>collecteur de trace<\/strong>. Pour activer \/ d\u00e9sactiver un collecteur, passer son attribut enabled \u00e0 <em>true<\/em> ou <em>false<\/em>:<\/span><\/span><\/p>\n<ul>\n<li><span style=\"color: #333333;\"><strong>EventlogCollector <\/strong>pour collecter les journaux d&#8217;\u00e9v\u00e8nements.<br \/>\n<\/span><\/li>\n<li><span style=\"color: #333333;\"><strong>PerfmonCollector <\/strong>pour lancer la trace perfmon.<\/span><\/li>\n<li><span style=\"color: #333333;\"><strong>SQLdiagCollector <\/strong>pour r\u00e9cup\u00e9rer toute la configuration de l&#8217;instance: param\u00e8tres, contenu de tous les errorlogs, connexions, verrous, liste des bases et options, xp_msver, etc&#8230;<br \/>\n<\/span><\/li>\n<li><span style=\"color: #333333;\"><strong>BlockingCollector <\/strong>pour l&#8217;\u00e9v\u00e8nement BlockedProcessReport de SQL Trace, rapporte les processus bloqu\u00e9s si le param\u00e8tre &#8216;<em>blocked process threshold (s)<\/em>&#8216; est configur\u00e9.<\/span><\/li>\n<li><span style=\"color: #333333;\"><strong>ProfilerCollector <\/strong>pour la trace SQL Trace compl\u00e8te avec les \u00e9v\u00e8nements que l&#8217;on aura indiqu\u00e9.<br \/>\n<\/span><\/li>\n<li><span style=\"color: #333333;\"><strong>CustomDiagnostics <\/strong>pour lancer des ex\u00e9cutables suppl\u00e9mentaires, en l&#8217;occurence msinfo32 dans notre cas, et r\u00e9cup\u00e9rer la configuration compl\u00e8te de la machine.<br \/>\n<\/span><\/li>\n<\/ul>\n<h3><span style=\"color: #333333;\"><strong>PerfmonCollector <\/strong><\/span><\/h3>\n<p><span style=\"color: #333333;\">C&#8217;est le collecteur de compteurs perfmon. Ses \u00e9l\u00e9ments fils sont &lt;PerfmonObject \/&gt; qui d\u00e9signe la famille de compteurs comme <em>&#8220;PhysicalDisk(*)<\/em>&#8221; par exemple, et &lt;PerfmonCounter \/&gt; qui d\u00e9signe le compteur associ\u00e9 comme &#8220;<em>\\Avg. Disk sec\/Read<\/em>&#8220;. On aura besoin d&#8217;activer chaque compteur en passant son attribut enabled \u00e0 <em>true<\/em>. Une zone PerfmonCollector peut ressembler \u00e0 ceci, avec le nom des compteurs en vert:<\/span><\/p>\n<pre><span style=\"color: #0000ff;\">&lt;PerfmonCollector enabled=\"true\" pollinginterval=\"30\" maxfilesize=\"256\"&gt;\r\n    &lt;PerfmonCounters&gt;\r\n        &lt;PerfmonObject name=\"\\PhysicalDisk(*)\" enabled=\"true\"&gt;\r\n             &lt;PerfmonCounter name=\"<span style=\"color: #008000;\">\\Avg. Disk sec\/Read<\/span>\" enabled=\"true\" \/&gt;\r\n             &lt;PerfmonCounter name=\"<span style=\"color: #008000;\">\\Avg. Disk sec\/Write<\/span>\" enabled=\"true\" \/&gt;\r\n             &lt;PerfmonCounter name=\"<span style=\"color: #008000;\">\\Disk Read Bytes\/sec<\/span>\" enabled=\"true\" \/&gt;\r\n             &lt;PerfmonCounter name=\"<span style=\"color: #008000;\">\\Disk Write Bytes\/sec<\/span>\" enabled=\"true\" \/&gt;\r\n             &lt;PerfmonCounter name=\"<span style=\"color: #008000;\">\\Avg. Disk Bytes\/Transfer<\/span>\" enabled=\"true\" \/&gt;\r\n        &lt;\/PerfmonObject&gt;\r\n        &lt;PerfmonObject name=\"\\Processor(*)\" enabled=\"true\"&gt;\r\n            &lt;PerfmonCounter name=\"<span style=\"color: #008000;\">\\% Processor Time<\/span>\" enabled=\"true\" \/&gt;\r\n            &lt;PerfmonCounter name=\"<span style=\"color: #008000;\">\\% User Time<\/span>\" enabled=\"true\" \/&gt;\r\n            &lt;PerfmonCounter name=\"<span style=\"color: #008000;\">\\% Privileged Time<\/span>\" enabled=\"true\" \/&gt;\r\n        &lt;\/PerfmonObject&gt;\r\n    &lt;\/PerfmonCounters&gt;\r\n&lt;\/PerfmonCollector&gt;<\/span><\/pre>\n<p><span style=\"color: #333333;\">L&#8217;attribut <em>pollinginterval <\/em>indique la fr\u00e9quence d&#8217;\u00e9chantillonnage des compteurs. Le fichier de sortie de ce collecteur sera un fichier BLG intitul\u00e9 tout simplement<em> <strong>SQLDIAG.blg<\/strong><\/em>. Il pourra \u00eatre corr\u00e9l\u00e9 plus tard avec la trace qui sera g\u00e9n\u00e9r\u00e9e par le collecteur ProfilerCollector.<\/span><\/p>\n<h3><span style=\"color: #333333;\">SQLdiagCollector<\/span><\/h3>\n<p><span style=\"color: #333333;\">C&#8217;est le collecteur de donn\u00e9es de l&#8217;instance. Il n&#8217;est pas param\u00e9trable est compos\u00e9 d&#8217;une seule ligne:<\/span><\/p>\n<pre><span style=\"color: #0000ff;\">&lt;SqldiagCollector enabled=\"true\" startup=\"false\" shutdown=\"true\" \/&gt; <\/span><\/pre>\n<p><span style=\"color: #333333;\">On l&#8217;activera donc en passant son attribut enabled \u00e0 <em>true<\/em> l\u00e0 encore. Les param\u00e8tres startup et shutdown permettent d&#8217;indiquer si la collecte se fait au d\u00e9marrage ou \u00e0 l&#8217;arr\u00eat de la trace SQLDIAG.<br \/>\n<\/span><\/p>\n<h3><span style=\"color: #333333;\">BlockingCollector:<\/span><\/h3>\n<p><span style=\"color: #333333;\">C&#8217;est le collecteur des processus bloqu\u00e9s en attente de lib\u00e9ration de ressources (verrous). Lui aussi n&#8217;est constitu\u00e9\u00a0 que d&#8217;un seul \u00e9l\u00e9ment:<\/span><\/p>\n<pre><span style=\"color: #0000ff;\">&lt;BlockingCollector enabled=\"true\" pollinginterval=\"5\" maxfilesize=\"350\" \/&gt; <\/span><\/pre>\n<p><span style=\"color: #333333;\">L&#8217;attribut <em>pollinginterval <\/em>d\u00e9signe la fr\u00e9quence d&#8217;\u00e9chantillonnage\u00a0 de l&#8217;\u00e9v\u00e8nement, et <em>maxfilesize <\/em>la taille maximale du fichier en sortie. Ce collecteur se base sur le param\u00e8tre d&#8217;instance &#8216;<em>blocked process threshold<\/em>&#8216; qui d\u00e9finit la dur\u00e9e en secondes au del\u00e0 de laquelle on consid\u00e8re que le blocage est anormalement long. Il faudra d\u00e9finir ce param\u00e8tre car sa valeur par d\u00e9faut est \u00e0 z\u00e9ro, ce qui signifie qu&#8217;il n&#8217;est pas activ\u00e9. Par exemple pour mettre le seuil \u00e0 20 secondes:<\/span><\/p>\n<pre><span style=\"color: #808080;\">sp_configure 'blocked process threshold', 20\r\ngo\r\nreconfigure\r\ngo<\/span><\/pre>\n<p><span style=\"color: #333333;\">Ensuite, le collecteur va cr\u00e9er une trace SQL Trace avec le seul \u00e9v\u00e8nement &#8216;<em>Blocked Process Report<\/em>&#8216;, et capturer les sessions qui auront \u00e9t\u00e9 bloqu\u00e9es pendant plus de 20 secondes. Le fichier de sortie de ce collecteur est un fichier trc classique nomm\u00e9 <strong><em>&lt;INSTANCE&gt;_SQLDIAG_sp_trace_blk<\/em><\/strong>.<\/span><\/p>\n<h3><span style=\"color: #333333;\">ProfilerCollector:<\/span><\/h3>\n<p><span style=\"color: #333333;\">Ensuite, ProfilerCollector est le collecteur de trace SQL Trace classique. Comme pour PerfmonCollector, il va disposer d&#8217;\u00e9l\u00e9ments fils comme &lt;EventType \/&gt; et &lt;Event \/&gt; dans lesquels on va bien entendu retrouver nos classes d&#8217;\u00e9v\u00e8nements:<\/span><\/p>\n<pre><span style=\"color: #0000ff;\">&lt;ProfilerCollector enabled=\"true\" template=\"_GeneralPerformance100.xml\" pollinginterval=\"5\" maxfilesize=\"350\"&gt;\r\n     &lt;Events&gt;\r\n         &lt;EventType name=\"Stored Procedures\"&gt;\r\n             &lt;Event id=\"10\" name=\"<span style=\"color: #008000;\">RPC:Completed<span style=\"color: #0000ff;\">\"<\/span><span style=\"color: #0000ff;\"> enabled=\"true<\/span><\/span>\"\/&gt;\r\n             &lt;Event id=\"11\" name=\"<span style=\"color: #008000;\">RPC:Starting<span style=\"color: #0000ff;\">\"<\/span><span style=\"color: #0000ff;\"><span style=\"color: #0000ff;\"> <\/span>enabled=\"true<\/span><\/span><span style=\"color: #0000ff;\">\"<\/span> \/&gt;\r\n             &lt;Event id=\"43\" name=\"<span style=\"color: #008000;\">SP:Completed<\/span>\" enabled=\"true\" \/&gt;\r\n             &lt;Event id=\"42\" name=\"<span style=\"color: #008000;\">SP:Starting<\/span>\" enabled=\"true\" \/&gt;\r\n             &lt;Event id=\"45\" name=\"<span style=\"color: #008000;\">SP:StmtCompleted<\/span>\" enabled=\"true\" \/&gt;\r\n             &lt;Event id=\"44\" name=\"<span style=\"color: #008000;\">SP:StmtStarting<\/span>\" enabled=\"true\" \/&gt;\r\n        &lt;\/EventType&gt;\r\n       &lt;EventType name=\"TSQL\"&gt;\r\n             &lt;Event id=\"40\" name=\"<span style=\"color: #008000;\">SQL:StmtStarting<\/span>\" enabled=\"true\"\/&gt;\r\n             &lt;Event id=\"41\" name=\"<span style=\"color: #008000;\">SQL:StmtCompleted<\/span>\" enabled=\"true\" \/&gt;\r\n       &lt;\/EventType&gt;\r\n     &lt;\/Events&gt;\r\n &lt;\/ProfilerCollector&gt;<\/span><\/pre>\n<p><span style=\"color: #333333;\">Le fichier de sortie de ce collecteur sera <\/span>aussi <span style=\"color: #333333;\">un fichier trace classique nomm\u00e9 <\/span><strong><em>&lt;INSTANCE&gt;_SQLDIAG_sp_trace.<\/em><\/strong><\/p>\n<h3><span style=\"color: #333333;\">CustomDiagnostics<\/span><\/h3>\n<p>Enfin, CustomDiagnostics permet de pousser encore plus loin la personnalisation du rapport, en nous permettant d&#8217;utiliser nos propres outils de collecte. L&#8217;outil qui est utilis\u00e9 par d\u00e9faut est <strong>msinfo32 <\/strong>qui est utilis\u00e9 pour afficher de mani\u00e8re graphique (D\u00e9marrer -&gt; Ex\u00e9cuter -&gt; msinfo32) ou en ligne de commande toute la configuration de la machine h\u00f4te:<\/p>\n<pre><span style=\"color: #0000ff;\">&lt;CustomDiagnostics&gt;\r\n &lt;CustomGroup name=\"msinfo\" enabled=\"true\" \/&gt;\r\n &lt;CustomTask enabled=\"true\" groupname=\"MsInfo\" taskname=\"<span style=\"color: #008000;\">Get MSINFO32<\/span>\" type=\"Utility\" point=\"Startup\" wait=\"OnlyOnShutdown\" cmd=\"start \/B \/WAIT MSInfo32.exe \/computer %server% \/report\r\n        \u00a0&amp;quot;%output_path%%server%_MSINFO32.TXT&amp;quot; \/categories +SystemSummary+ResourcesConflicts+ResourcesIRQS+ComponentsNetwork+ComponentsStorage+ComponentsProblemDevices+SWEnvEnvVars+\r\n         SWEnvNetConn+SWEnvServices+SWEnvProgramGroup+SWEnvStartupPrograms\" \/&gt;\r\n &lt;CustomTask enabled=\"true\" groupname=\"MsInfo\" taskname=\"<span style=\"color: #008000;\">Get default traces<\/span>\" type=\"Copy_File\" point=\"Startup\" wait=\"OnlyOnShutdown\" cmd=\"&amp;quot;%sspath%log\\log*.trc&amp;quot; &amp;quot;%output_path%&amp;quot;\" \/&gt;\r\n &lt;CustomTask enabled=\"true\" groupname=\"MsInfo\" taskname=\"<span style=\"color: #008000;\">Get SQLDumper log<\/span>\" type=\"Copy_File\" point=\"Startup\" wait=\"OnlyOnShutdown\" cmd=\"&amp;quot;%sspath%log\\SQLDUMPER_ERRORLOG.log&amp;quot;\r\n          &amp;quot;%output_path%%server%_%instance%_SQLDUMPER_ERRORLOG.log&amp;quot;\" \/&gt;\r\n &lt;\/CustomDiagnostics&gt;<\/span><\/pre>\n<p>Mais en plus de r\u00e9cup\u00e9rer le contenu d&#8217;une trace msinfo32, il peut \u00e9galement r\u00e9cup\u00e9rer le contenu des traces SQL Server par d\u00e9faut *, et les stacktraces g\u00e9n\u00e9r\u00e9es par SQL Server lorsqu&#8217;il rencontre une erreur fatale sur un module. Il va copier le contenu de ces traces dans le r\u00e9pertoire pass\u00e9 \u00e0 l&#8217;ex\u00e9cution de SQLDIAG.<\/p>\n<h2>Ex\u00e9cution d&#8217;une trace<\/h2>\n<p>Une fois le fichier XML d\u00e9fini, lancer une trace devient un jeu d&#8217;enfant:<\/p>\n<pre><strong>$ sqldiag \/I MyXMLfile.xml \/O e:\/SQLDIAG\/TRACE1<\/strong>\r\n<span style=\"color: #808080;\">2010\/02\/04 18:58:10.28 SQLDIAG Collector version\r\n2010\/02\/04 18:58:10.29 SQLDIAG<\/span>\r\n\r\n<span style=\"color: #008000;\">IMPORTANT:\u00a0 Please wait until you see \"Collection started\" before attempting to reproduce your issue<\/span>\r\n\r\n<span style=\"color: #808080;\">2010\/02\/04 18:58:10.29 SQLDIAG Output path: e:\\SQLDIAG\\TRACE1\\\r\n2010\/02\/04 18:58:10.33 SQLDIAG Collecting from 1 logical machine(s)\r\n2010\/02\/04 18:58:10.34 SQLDIAG Invalid node fetched. (null)\r\n2010\/02\/04 18:58:10.34 SQLDIAG Invalid node fetched. (null)\r\n2010\/02\/04 18:58:10.34 MS2K8-WIN2008-1\\* SQL Server version: 10\r\n2010\/02\/04 18:58:10.35 MS2K8-WIN2008-1\\* Machine name: MS2K8-WIN2008-1 (this machine)\r\n2010\/02\/04 18:58:10.35 MS2K8-WIN2008-1\\* Target machine is not a cluster\r\n2010\/02\/04 18:58:10.35 MS2K8-WIN2008-1\\* Instance: (Default) (32-bit)\r\n2010\/02\/04 18:58:12.40 SQLDIAG Initialization starting...\r\n2010\/02\/04 18:58:13.98 MS2K8-WIN2008-1\\* Starting Profiler trace\r\n2010\/02\/04 18:58:14.94 MS2K8-WIN2008-1\\* Starting Blocking script\r\n2010\/02\/04 18:58:16.88 MS2K8-WIN2008-1\\* MsInfo: Get MSINFO32\r\n2010\/02\/04 18:58:17.26 MS2K8-WIN2008-1\\* MsInfo: Get default traces\r\n2010\/02\/04 18:58:17.47 MS2K8-WIN2008-1\\* MsInfo: Get SQLDumper log\r\n2010\/02\/04 18:58:17.71 MS2K8-WIN2008-1\\* Adding Perfmon counters...\r\n2010\/02\/04 18:58:20.73 MS2K8-WIN2008-1\\* Starting Perfmon\r\n2010\/02\/04 18:58:20.73 SQLDIAG Initialization complete\r\n2010\/02\/04 18:58:21.53 MS2K8-WIN2008-1\\* Perfmon started\r\n2010\/02\/04 18:58:21.58 MS2K8-WIN2008-1\\* Collecting diagnostic data<\/span>\r\n\r\n<span style=\"color: #008000;\">2010\/02\/04 18:58:22.28 SQLDIAG Collection started.\u00a0 Press Ctrl+C to stop.<\/span><\/pre>\n<p>La trace est lanc\u00e9e, un simple Ctrl-C suffira \u00e0 la stopper. Les commutateurs \/I et \/O permettent d&#8217;indiquer le fichier de configuration XML choisi et le r\u00e9pertoire o\u00f9 va se loger le contenu de la trace compl\u00e8te.<\/p>\n<p>Il existe aussi des commutateurs pour indiquer \u00e0 SQLDIAG de programmer son ex\u00e9cution \u00e0 des heures d\u00e9termin\u00e9es. Il est m\u00eame possible de l&#8217;enregistrer en tant que service dans windows.<\/p>\n<p>Dans le prochain post sur SQLDIAG, on verra comment d\u00e9pouiller les fichiers de r\u00e9sultat.<\/p>\n<p>A+ David B.<\/p>\n<p>(avec la collaboration de Martial LUCAS. )<\/p>\n<p><em>* Depuis la version SQL Server 2005, un param\u00e8tre instance &#8216;default trace enabled&#8217; avec une valeur de 1 (valeur par d\u00e9faut) g\u00e9n\u00e8re une trace syst\u00e9matiquement au d\u00e9marrage de l&#8217;instance. Cette trace contient les classes \u00e9v\u00e8nements Database, Errors and Warnings, Full text, Objects, Performance, Server et Security Audit. Chaque trace vient se loger dans le r\u00e9pertoire des ERRORLOG par d\u00e9faut.<\/em><\/p>\n<p><script type=\"text\/javascript\" src=\"https:\/\/tcr.tynt.com\/javascripts\/Tracer.js?user=d4FlbGI04r35lZadbi-bpO\"><\/script><\/p>\n<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F490&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F490&#038;title=SQLDIAG%20%28%C3%A9pisode%201%29\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=SQLDIAG%20%28%C3%A9pisode%201%29&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F490\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a>","protected":false},"excerpt":{"rendered":"<p>D\u00e9but d&#8217;une assez longue s\u00e9rie de posts sur l&#8217;utilitaire SQLDIAG et ses petits camarades de jeu PSSDIAG, SQLNexus et autres RML Utilities&#8230; SQLDIAG est un utilitaire en mode ligne de commandes qui est livr\u00e9 avec SQL Server depuis plus de&hellip; <a href=\"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/\" class=\"more-link\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":7967,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[73,72,80,71,81],"class_list":["post-490","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sqlserver","tag-perfmon","tag-pssdiag","tag-rml-utilities","tag-sqldiag","tag-sqlnexus"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SQLDIAG (\u00e9pisode 1) - Capdata TECH BLOG<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQLDIAG (\u00e9pisode 1) - Capdata TECH BLOG\" \/>\n<meta property=\"og:description\" content=\"D\u00e9but d&#8217;une assez longue s\u00e9rie de posts sur l&#8217;utilitaire SQLDIAG et ses petits camarades de jeu PSSDIAG, SQLNexus et autres RML Utilities&#8230; SQLDIAG est un utilitaire en mode ligne de commandes qui est livr\u00e9 avec SQL Server depuis plus de&hellip; Continuer la lecture &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Capdata TECH BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2010-02-05T12:10:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-04T08:32:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2010\/02\/doctor-character-background_1270-84.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"626\" \/>\n\t<meta property=\"og:image:height\" content=\"626\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"David Baffaleuf\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Baffaleuf\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/\"},\"author\":{\"name\":\"David Baffaleuf\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\"},\"headline\":\"SQLDIAG (\u00e9pisode 1)\",\"datePublished\":\"2010-02-05T12:10:31+00:00\",\"dateModified\":\"2023-01-04T08:32:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/\"},\"wordCount\":1055,\"commentCount\":10,\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"keywords\":[\"perfmon\",\"pssdiag\",\"RML Utilities\",\"sqldiag\",\"SQLNexus\"],\"articleSection\":[\"SQL Server\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/\",\"url\":\"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/\",\"name\":\"SQLDIAG (\u00e9pisode 1) - Capdata TECH BLOG\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/#website\"},\"datePublished\":\"2010-02-05T12:10:31+00:00\",\"dateModified\":\"2023-01-04T08:32:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.capdata.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQLDIAG (\u00e9pisode 1)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.capdata.fr\/#website\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"name\":\"Capdata TECH BLOG\",\"description\":\"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting\",\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.capdata.fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.capdata.fr\/#organization\",\"name\":\"Capdata TECH BLOG\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"contentUrl\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"width\":800,\"height\":254,\"caption\":\"Capdata TECH BLOG\"},\"image\":{\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\",\"name\":\"David Baffaleuf\",\"sameAs\":[\"http:\/\/www.capdata.fr\"],\"url\":\"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SQLDIAG (\u00e9pisode 1) - Capdata TECH BLOG","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/","og_locale":"fr_FR","og_type":"article","og_title":"SQLDIAG (\u00e9pisode 1) - Capdata TECH BLOG","og_description":"D\u00e9but d&#8217;une assez longue s\u00e9rie de posts sur l&#8217;utilitaire SQLDIAG et ses petits camarades de jeu PSSDIAG, SQLNexus et autres RML Utilities&#8230; SQLDIAG est un utilitaire en mode ligne de commandes qui est livr\u00e9 avec SQL Server depuis plus de&hellip; Continuer la lecture &rarr;","og_url":"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/","og_site_name":"Capdata TECH BLOG","article_published_time":"2010-02-05T12:10:31+00:00","article_modified_time":"2023-01-04T08:32:09+00:00","og_image":[{"width":626,"height":626,"url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2010\/02\/doctor-character-background_1270-84.jpg","type":"image\/jpeg"}],"author":"David Baffaleuf","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"David Baffaleuf","Dur\u00e9e de lecture estim\u00e9e":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/#article","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/"},"author":{"name":"David Baffaleuf","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf"},"headline":"SQLDIAG (\u00e9pisode 1)","datePublished":"2010-02-05T12:10:31+00:00","dateModified":"2023-01-04T08:32:09+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/"},"wordCount":1055,"commentCount":10,"publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"keywords":["perfmon","pssdiag","RML Utilities","sqldiag","SQLNexus"],"articleSection":["SQL Server"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/","url":"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/","name":"SQLDIAG (\u00e9pisode 1) - Capdata TECH BLOG","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/#website"},"datePublished":"2010-02-05T12:10:31+00:00","dateModified":"2023-01-04T08:32:09+00:00","breadcrumb":{"@id":"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.capdata.fr\/index.php\/sqldiag-episode-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.capdata.fr\/"},{"@type":"ListItem","position":2,"name":"SQLDIAG (\u00e9pisode 1)"}]},{"@type":"WebSite","@id":"https:\/\/blog.capdata.fr\/#website","url":"https:\/\/blog.capdata.fr\/","name":"Capdata TECH BLOG","description":"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting","publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.capdata.fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/blog.capdata.fr\/#organization","name":"Capdata TECH BLOG","url":"https:\/\/blog.capdata.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/","url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","contentUrl":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","width":800,"height":254,"caption":"Capdata TECH BLOG"},"image":{"@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/"]},{"@type":"Person","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf","name":"David Baffaleuf","sameAs":["http:\/\/www.capdata.fr"],"url":"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/490","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/comments?post=490"}],"version-history":[{"count":95,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/490\/revisions"}],"predecessor-version":[{"id":9594,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/490\/revisions\/9594"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media\/7967"}],"wp:attachment":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=490"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=490"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=490"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}