{"id":3019,"date":"2011-10-06T11:50:28","date_gmt":"2011-10-06T10:50:28","guid":{"rendered":"http:\/\/blog.capdata.fr\/?p=3019"},"modified":"2019-09-13T14:34:21","modified_gmt":"2019-09-13T13:34:21","slug":"suppression-accidentelle-de-ligne-comment-retrouver-le-coupable","status":"publish","type":"post","link":"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/","title":{"rendered":"Suppression accidentelle de ligne : comment retrouver le coupable ?"},"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%2F3019&#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%2F3019&#038;title=Suppression%20accidentelle%20de%20ligne%20%3A%20comment%20retrouver%20le%20coupable%20%3F\" 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=Suppression%20accidentelle%20de%20ligne%20%3A%20comment%20retrouver%20le%20coupable%20%3F&#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%2F3019\" 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>C&#8217;est vrai qu&#8217;il y a des outis, Change Data Capture et tout l&#8217;arsenal des Database Audit Specifications. Mais pour retrouver qui a supprim\u00e9 les lignes dans la table T1 le 17 septembre dernier entre 12h00 et 14h00 il y a encore plus simple, pour peu qu&#8217;il y ait des backups de transactions.<\/p>\n<h2>La fonction qui tue:<\/h2>\n<p>Dans un article <a href=\"http:\/\/blog.capdata.fr\/index.php\/point-in-time-recovery-et-fn_dump_dblog\/\">pr\u00e9c\u00e9dent<\/a>, nous avons couvert une fonction table valu\u00e9e fort int\u00e9ressante qui permet de relire \u00e0 l&#8217;int\u00e9rieur d&#8217;une sauvegarde de journal: <strong>fn_dump_dblog()<\/strong>. Nous allons nous en servir pour conna\u00eetre cette fois l&#8217;identit\u00e9 du coupable. La table concern\u00e9e par le DELETE est la table T1, il faut commencer par r\u00e9cup\u00e9rer sa valeur de allocation_unit_id:<\/p>\n<pre><span style=\"color: #0000ff;\">select allocation_unit_id from sys.allocation_units AU inner join sys.partitions P\r\non P.hobt_id = AU.container_id where P.object_id = object_id('T1')<\/span><\/pre>\n<pre><span style=\"color: #3366ff;\"><em>allocation_unit_id\r\n---------------------\r\n72057594043301888\r\n<\/em><\/span><\/pre>\n<p>Ensuite, rechercher dans les backups transactionnels des op\u00e9rations de suppression de lignes sur cet objet:<\/p>\n<pre><span style=\"color: #0000ff;\">select [Current LSN] ,Operation ,[Transaction ID] ,AllocUnitId\r\nfrom fn_dump_dblog(DEFAULT, DEFAULT,DEFAULT, DEFAULT,\r\n'<span style=\"color: #ff0000;\">C:\\UTRECHT\\MSSQL.1\\MSSQL\\Backup\\demorecovery.TRAN2.bak<\/span>',\r\nDEFAULT,DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT,DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,DEFAULT,\r\nDEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,DEFAULT, DEFAULT,\r\nDEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT, DEFAULT, DEFAULT, DEFAULT,DEFAULT, DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT, DEFAULT, DEFAULT,DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT, DEFAULT,DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT) where Operation\u00a0 = '<span style=\"color: #ff0000;\">LOP_DELETE_ROWS<\/span>' and AllocUnitId = <span style=\"color: #ff0000;\">72057594043301888\r\n\r\n<\/span><\/span><span style=\"color: #3366ff;\"><em>Current LSN\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Operation\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0  Transaction ID AllocUnitId\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n----------------------- ------------------ -------------- --------------------\r\n00000025:00000032:0003\u00a0 LOP_DELETE_ROWS\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\">0000:00000a9d\u00a0<\/span> 72057594043301888\u00a0\u00a0\u00a0\r\n00000025:00000032:0005\u00a0 LOP_DELETE_ROWS\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\">0000:00000a9d<\/span>\u00a0 72057594043301888\u00a0\u00a0\u00a0\r\n00000025:00000032:0006\u00a0 LOP_DELETE_ROWS\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\">0000:00000a9d<\/span>\u00a0 72057594043301888\u00a0\u00a0\u00a0\r\n00000025:00000032:0007\u00a0 LOP_DELETE_ROWS\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\">0000:00000a9d<\/span>\u00a0 72057594043301888\u00a0\u00a0\u00a0\r\n00000025:00000032:0008\u00a0 LOP_DELETE_ROWS\u00a0\u00a0\u00a0 <span style=\"color: #ff0000;\">0000:00000a9d<\/span>\u00a0 72057594043301888\u00a0\u00a0\u00a0<\/em><\/span>\r\n<span style=\"color: #3366ff;\">...<\/span><\/pre>\n<p>On r\u00e9cup\u00e8re le LSN de la transaction pour retrouver le BEGIN TRAN correspondant:\u00a0 <span style=\"color: #ff0000;\"><em>0000:00000a9d<\/em>:<\/span><\/p>\n<pre><span style=\"color: #0000ff;\">select [Current LSN] ,Operation ,[Transaction ID] ,AllocUnitId\r\n ,[Begin Time] ,[Transaction Name] ,[End Time] ,[Description]\r\n ,[Transaction SID]\r\nfrom fn_dump_dblog(DEFAULT, DEFAULT,DEFAULT, DEFAULT,\r\n'<span style=\"color: #ff0000;\">C:\\UTRECHT\\MSSQL.1\\MSSQL\\Backup\\demorecovery.TRAN2.bak<\/span>',\r\nDEFAULT,DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,\r\nDEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)\r\nwhere Operation\u00a0 = '<span style=\"color: #ff0000;\">LOP_BEGIN_XACT<\/span>' and [Transaction ID] = '<span style=\"color: #ff0000;\">0000:00000a9d<\/span>'<\/span>\r\n\r\n<span style=\"color: #3366ff;\">Current LSN\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Operation\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Transaction ID AllocUnitId\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n----------------------- ------------------------------- -------------- --------------------\r\n00000025:00000032:0001\u00a0 LOP_BEGIN_XACT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0000:00000a9d\u00a0 NULL\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \r\n\r\n<\/span><\/pre>\n<pre><span style=\"color: #3366ff;\"> Begin Time\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Transaction Name\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Description\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\r\n------------------------ --------------------------------- -----------------------------------------------\r\n2011\/10\/05 15:21:50:510\u00a0 tralalala\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tralalala;<span style=\"color: #ff0000;\">0x75a770d73d6bf54bb0dc07725254ae57<\/span>\u00a0   <\/span><span style=\"color: #ff0000;\">\r\n\r\n<\/span><\/pre>\n<pre><span style=\"color: #3366ff;\">Transaction SID\r\n------------------------------------\r\n<span style=\"color: #ff0000;\">0x75A770D73D6BF54BB0DC07725254AE57<\/span><\/span><\/pre>\n<p>Remarque int\u00e9ressante, [Transaction SID] (en rouge) correspond au SID de l&#8217;utilisateur dans la base&#8230;<\/p>\n<h2>Le d\u00e9nouement&#8230;<\/h2>\n<p>Il ne reste plus qu&#8217;\u00e0 d\u00e9gainer la requ\u00eate sur sys.database_principals:<\/p>\n<pre><span style=\"color: #0000ff;\">select name from sys.database_principals where sid = <span style=\"color: #ff0000;\">0x75A770D73D6BF54BB0DC07725254AE57<\/span><\/span><\/pre>\n<pre><em><span style=\"color: #3366ff;\">name\r\n<\/span><span style=\"color: #3366ff;\">-------------------\r\nuser1\r\n\r\n<\/span><\/em><em><\/em><\/pre>\n<p>A+<\/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%2F3019&#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%2F3019&#038;title=Suppression%20accidentelle%20de%20ligne%20%3A%20comment%20retrouver%20le%20coupable%20%3F\" 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=Suppression%20accidentelle%20de%20ligne%20%3A%20comment%20retrouver%20le%20coupable%20%3F&#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%2F3019\" 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>C&#8217;est vrai qu&#8217;il y a des outis, Change Data Capture et tout l&#8217;arsenal des Database Audit Specifications. Mais pour retrouver qui a supprim\u00e9 les lignes dans la table T1 le 17 septembre dernier entre 12h00 et 14h00 il y a&hellip; <a href=\"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/\" class=\"more-link\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":7906,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[93,11],"class_list":["post-3019","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sqlserver","tag-backup","tag-journal-de-transactions"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Suppression accidentelle de ligne : comment retrouver le coupable ? - 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\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Suppression accidentelle de ligne : comment retrouver le coupable ? - Capdata TECH BLOG\" \/>\n<meta property=\"og:description\" content=\"C&#8217;est vrai qu&#8217;il y a des outis, Change Data Capture et tout l&#8217;arsenal des Database Audit Specifications. Mais pour retrouver qui a supprim\u00e9 les lignes dans la table T1 le 17 septembre dernier entre 12h00 et 14h00 il y a&hellip; Continuer la lecture &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/\" \/>\n<meta property=\"og:site_name\" content=\"Capdata TECH BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2011-10-06T10:50:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-09-13T13:34:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/10\/fndblog.png\" \/>\n\t<meta property=\"og:image:width\" content=\"657\" \/>\n\t<meta property=\"og:image:height\" content=\"455\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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=\"3 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\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/\"},\"author\":{\"name\":\"David Baffaleuf\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\"},\"headline\":\"Suppression accidentelle de ligne : comment retrouver le coupable ?\",\"datePublished\":\"2011-10-06T10:50:28+00:00\",\"dateModified\":\"2019-09-13T13:34:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/\"},\"wordCount\":196,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"keywords\":[\"backup\",\"journal de transactions\"],\"articleSection\":[\"SQL Server\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/\",\"url\":\"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/\",\"name\":\"Suppression accidentelle de ligne : comment retrouver le coupable ? - Capdata TECH BLOG\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/#website\"},\"datePublished\":\"2011-10-06T10:50:28+00:00\",\"dateModified\":\"2019-09-13T13:34:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.capdata.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Suppression accidentelle de ligne : comment retrouver le coupable ?\"}]},{\"@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":"Suppression accidentelle de ligne : comment retrouver le coupable ? - 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\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/","og_locale":"fr_FR","og_type":"article","og_title":"Suppression accidentelle de ligne : comment retrouver le coupable ? - Capdata TECH BLOG","og_description":"C&#8217;est vrai qu&#8217;il y a des outis, Change Data Capture et tout l&#8217;arsenal des Database Audit Specifications. Mais pour retrouver qui a supprim\u00e9 les lignes dans la table T1 le 17 septembre dernier entre 12h00 et 14h00 il y a&hellip; Continuer la lecture &rarr;","og_url":"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/","og_site_name":"Capdata TECH BLOG","article_published_time":"2011-10-06T10:50:28+00:00","article_modified_time":"2019-09-13T13:34:21+00:00","og_image":[{"width":657,"height":455,"url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2011\/10\/fndblog.png","type":"image\/png"}],"author":"David Baffaleuf","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"David Baffaleuf","Dur\u00e9e de lecture estim\u00e9e":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/#article","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/"},"author":{"name":"David Baffaleuf","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf"},"headline":"Suppression accidentelle de ligne : comment retrouver le coupable ?","datePublished":"2011-10-06T10:50:28+00:00","dateModified":"2019-09-13T13:34:21+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/"},"wordCount":196,"commentCount":1,"publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"keywords":["backup","journal de transactions"],"articleSection":["SQL Server"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/","url":"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/","name":"Suppression accidentelle de ligne : comment retrouver le coupable ? - Capdata TECH BLOG","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/#website"},"datePublished":"2011-10-06T10:50:28+00:00","dateModified":"2019-09-13T13:34:21+00:00","breadcrumb":{"@id":"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.capdata.fr\/index.php\/suppression-accidentelle-de-ligne-comment-retrouver-le-coupable\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.capdata.fr\/"},{"@type":"ListItem","position":2,"name":"Suppression accidentelle de ligne : comment retrouver le coupable ?"}]},{"@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\/3019","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=3019"}],"version-history":[{"count":32,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/3019\/revisions"}],"predecessor-version":[{"id":3051,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/3019\/revisions\/3051"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media\/7906"}],"wp:attachment":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=3019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=3019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=3019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}