{"id":4,"date":"2008-12-11T18:09:55","date_gmt":"2008-12-11T17:09:55","guid":{"rendered":"http:\/\/192.168.1.220:8080\/blogs\/sqlserver\/?p=5"},"modified":"2023-04-20T07:03:22","modified_gmt":"2023-04-20T06:03:22","slug":"modes-de-recuperation-et-journal-de-transactions-episode-2","status":"publish","type":"post","link":"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/","title":{"rendered":"Modes de r\u00e9cup\u00e9ration et journal de transactions, \u00e9pisode 2"},"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%2F4&#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%2F4&#038;title=Modes%20de%20r%C3%A9cup%C3%A9ration%20et%20journal%20de%20transactions%2C%20%C3%A9pisode%202\" 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=Modes%20de%20r%C3%A9cup%C3%A9ration%20et%20journal%20de%20transactions%2C%20%C3%A9pisode%202&#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%2F4\" 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>Dans l&#8217;article pr\u00e9c\u00e9dent, nous avons vu quels sont les principaux modes de r\u00e9cup\u00e9ration SIMPLE et FULL, et leur effet respectif sur le journal des transactions.<\/p>\n<p>Ici nous allons aborder le troisi\u00e8me mode BULK-LOGGED, ses avantages, inconv\u00e9nients et contextes d&#8217;utilisation. Quelques rappels du post pr\u00e9c\u00e9dent:<\/p>\n<p><strong>BULK-LOGGED: <\/strong>c&#8217;est un mode \u00e0 combiner avec le mode FULL. Dans ce mode, les op\u00e9rations de modification de masse ne sont pas compl\u00e8tement journalis\u00e9es, et l&#8217;impact de telles op\u00e9rations sur le journal est limit\u00e9. Le fait de changer de FULL \u00e0 BULK-LOGGED ne modifie en rien ma fa\u00e7on de sauvegarder mes bases. En mode BULK-LOGGED, mes sauvegardes transactionnelles horaires continuent de s&#8217;ex\u00e9cuter sans probl\u00e8me. Tr\u00e8s utile lorsqu&#8217;on lance notre r\u00e9organisation des indexes hebdomadaire car on gagne un temps fou.<\/p>\n<p>Quelles sont ces op\u00e9rations de modification de masse:<\/p>\n<ol>\n<li>SELECT INTO<\/li>\n<li>BCP IN \/ BULK INSERT<\/li>\n<li>ALTER INDEX  &#8230; REBUILD<\/li>\n<li>Manipulation de champs de type TEXT:<\/li>\n<\/ol>\n<p>On les appelle parfois par abus de langage op\u00e9rations <em>non logg\u00e9es<\/em>, le terme plus juste est <em>minimallement logg\u00e9es<\/em>.<\/p>\n<p class=\"MsoNormal\">Lorsqu\u2019une de ces op\u00e9rations <em>minimalement logg\u00e9e <\/em>est ex\u00e9cut\u00e9e, seules les allocations de pages sont journalis\u00e9es, mais elles seules ne suffisent pas \u00e0 restaurer l\u2019int\u00e9gralit\u00e9 de mon reindex ou de mon select into en cas de crash. C\u2019est pourquoi pour permettre de restaurer ces donn\u00e9es modifi\u00e9es, la sauvegarde embarque avec elle les pages de donn\u00e9es allou\u00e9es lors de l\u2019op\u00e9ration.<\/p>\n<p class=\"MsoNormal\">Pour le v\u00e9rifier, on se propose de comparer sous les deux modes de r\u00e9cup\u00e9ration FULL et BULK_LOGGED, deux op\u00e9rations minimalement logg\u00e9es :<\/p>\n<ol>\n<li>Un SELECT INTO d&#8217;une table de 2,6 millions de lignes dans une table d\u2019archive.<\/li>\n<li>Le rebuild d\u2019un index clusteris\u00e9 sur une table de 2,6 millions de lignes.<\/li>\n<\/ol>\n<p class=\"MsoNormal\">Dans chaque cas, nous allons mesurer plusieurs choses :<\/p>\n<ol>\n<li> Le temps d\u2019ex\u00e9cution de l\u2019op\u00e9ration.<\/li>\n<li>L\u2019impact sur le journal de transactions (en Mb).<\/li>\n<li>L\u2019impact sur la taille de ma sauvegarde de transaction (en Mb).<\/li>\n<\/ol>\n<p class=\"MsoNormal\"><!--[if !supportLists]--><strong><span>1)<span> <\/span><\/span><span dir=\"ltr\">En mode de r\u00e9cup\u00e9ration FULL :<\/span><\/strong><!--[endif]--><\/p>\n<p class=\"MsoNormal\">Pour pouvoir ex\u00e9cuter la sauvegarde du journal \u00e0 l\u2019issue de chaque op\u00e9ration, il faut commencer par ex\u00e9cuter une sauvegarde compl\u00e8te (voir article <a title=\"recovery models, episode 1\" href=\"https:\/\/www.alldb.fr\/blogs\/?p=5\">pr\u00e9c\u00e9dent<\/a>) :<\/p>\n<pre><span>ALTER DATABASE CAPDATA SET RECOVERY FULL\r\n\r\nBACKUP DATABASE CAPDATA TO DISK='C:\\YUKON\\BACKUP\\CAPDATA.bak'\r\nWITH init, stats<\/span><\/pre>\n<p class=\"MsoNormal\">Ensuite on va v\u00e9rifier que l\u2019on part sur un journal vide :<\/p>\n<pre><span>dbcc sqlperf(logspace)<\/span>\r\n\r\n<span>Database Name        Log Size (MB) Log Space Used (%) Status\r\n----------------------------------------------------------------------------------------------\r\nCAPDATA            49,99219      2,951633           0<\/span><\/pre>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">Le journal fait 50Mb, il est vide (2%). On peut donc lancer le SELECT INTO :<\/p>\n<pre><span>set statistics time on\r\nselect * into PIECEAPPARTEMENT2 from PIECEAPPARTEMENT\r\n<\/span><\/pre>\n<pre><span><span> SQL Server parse and compile time: <\/span><\/span><\/pre>\n<pre><span><span><span> <\/span>CPU time = 0 ms, elapsed time = 48 ms.<\/span><\/span><\/pre>\n<pre><span><span> <span> <\/span>SQL Server Execution Times:<\/span><\/span><\/pre>\n<pre><span><span><span> <\/span>CPU time = 7641 ms,<span> <\/span>elapsed time = <strong>57673<\/strong> ms.<\/span><\/span><\/pre>\n<pre><span><span> (<strong>2644317<\/strong> row(s) affected)<\/span><\/span><\/pre>\n<p class=\"MsoNormal\">Quelle est la taille du journal ?<\/p>\n<pre><span><span lang=\"EN-GB\">dbcc<\/span><span lang=\"EN-GB\"> sqlperf(logspace)<\/span><\/span><\/pre>\n<pre><span><span>\r\nDatabase Name        Log Size (MB) Log Space Used (%) Status\r\n----------------------------------------------------------------------------------------------\r\n<\/span><\/span><\/pre>\n<pre><span><span>CAPDATA<span> <\/span>            97,55469<span>       <\/span>93,43568<span> <\/span><span>           <\/span>0\r\n<\/span><\/span><\/pre>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">Il est pass\u00e9 de 50 \u00e0 97 Mb, et il est plein. Sauvegardons la transaction pour le vider :<\/p>\n<pre><span><span lang=\"EN-GB\">BACKUP<\/span><span lang=\"EN-GB\"> LOG CAPDATA <span>TO<\/span> DISK=<span>'C:\\YUKON\\BACKUP\\CAPDATA.trn'<\/span> <span>with<\/span> init, stats<\/span><\/span><\/pre>\n<pre><span><span lang=\"EN-GB\">\r\n(\u2026)<\/span><\/span><\/pre>\n<pre><span><span lang=\"EN-GB\">BACKUP LOG successfully processed 11592 pages in 25.525 seconds (3.720 MB\/sec).<\/span><\/span><\/pre>\n<p class=\"MsoNormal\">11592 * 8192 ~= <strong>93 Mb<\/strong>, soit la taille de ma transaction dans mon journal. Normal. Une fois la sauvegarde effectu\u00e9e, on repart sur un journal vide. On peut donc lancer imm\u00e9diatement le REBUILD de l\u2019index sur PIECEAPPARTEMENT :<\/p>\n<pre><span><span lang=\"EN-GB\">ALTER<\/span><span lang=\"EN-GB\"> <span>INDEX<\/span> PK_PIECEAPPARTEMENT <span>ON<\/span> PIECEAPPARTEMENT REBUILD WITH<\/span><span lang=\"EN-GB\"> (SORT_IN_TEMPDB = <span>ON<\/span>)<\/span><\/span><\/pre>\n<pre><span><span>\r\n SQL Server Execution Times:<\/span><\/span><\/pre>\n<pre><span><span lang=\"EN-GB\"><span> <\/span>CPU time = 11828 ms,<span> <\/span>elapsed time = <strong>66788<\/strong> ms.<\/span><\/span><\/pre>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">A nouveau le journal est plein et si je le sauvegarde encore, la taille du fichier sera \u00e9gale \u00e0 la taille de ma transaction.<\/p>\n<pre><span><span lang=\"EN-GB\">dbcc<\/span><span lang=\"EN-GB\"> sqlperf(logspace)<\/span><\/span><\/pre>\n<pre><span lang=\"EN-GB\">\r\n <span>Database Name<span> <\/span>     Log Size (MB)     Log Space Used (%)    Status<\/span><\/span><\/pre>\n<pre><span><span lang=\"EN-GB\">----------------------------------------------------------------------------------------------<\/span><\/span><\/pre>\n<pre><span><span>CAPDATA<span> <\/span>            97,55469<span>          <\/span>92,42763<span>               <\/span>0<\/span><\/span><\/pre>\n<p class=\"MsoNormal\"><span lang=\"EN-GB\"> <\/span><\/p>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\"><strong><span>2)<span> <\/span><\/span><span dir=\"ltr\">En mode de r\u00e9cup\u00e9ration BULK_LOGGED :<\/span><\/strong><!--[endif]--><\/p>\n<p class=\"MsoNormal\">M\u00eame sc\u00e9nario mais cette fois la base est pass\u00e9e en mode de r\u00e9cup\u00e9ration BULK_LOGGED, et mon journal est vide. Pour partir sur la m\u00eame enveloppe initiale, et ne pas fausser les r\u00e9sultats pour le SELECT INTO, je vais r\u00e9duire la taille de mon journal \u00e0 sa taille de d\u00e9part (50Mb) :<\/p>\n<pre><span><span>dbcc<\/span><span> shrinkfile(<span>'CAPDATA_log01'<\/span>,50)<\/span><\/span><\/pre>\n<pre><span><span lang=\"EN-GB\">\r\nDbId<span> <\/span>  FileId<span>   <\/span>    CurrentSize MinimumSize UsedPages<span> <\/span>   EstimatedPages<\/span><\/span><\/pre>\n<pre><span><span>------ ----------- ----------- ----------- ----------- --------------<\/span><\/span><\/pre>\n<pre><span><span>6<span> <\/span>     2<span> <\/span>       6400<span> <\/span>          6400<span> <\/span><span> <\/span>      6400<span> <\/span>         6400<\/span><\/span><\/pre>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">Et je lance le SELECT INTO :<\/p>\n<pre><span><span lang=\"EN-GB\">\r\nSQL Server Execution Times:<\/span><\/span><\/pre>\n<pre><span><span lang=\"EN-GB\"><span> <\/span>CPU time = 8235 ms,<span> <\/span>elapsed time = <strong>24353<\/strong> ms.<\/span><\/span><\/pre>\n<pre><span><span> (<strong>2644317<\/strong> row(s) affected)<\/span><\/span><\/pre>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">D\u00e9j\u00e0, il a mis deux fois moins de temps. Voyons voir la situation du journal :<\/p>\n<pre><span><span>dbcc<\/span><span> sqlperf(logspace)<\/span><\/span><\/pre>\n<pre><span><span lang=\"EN-GB\">\r\n Database Name<span> <\/span>Log Size (MB) Log Space Used (%) Status<\/span><\/span><\/pre>\n<pre><span><span lang=\"EN-GB\">----------------------------------------------------------------------------------------------<\/span><\/span><\/pre>\n<pre><span><span>CAPDATA<span> <\/span>      49,99219<span>      <\/span>3,073722<span>             <\/span>0<\/span><\/span><\/pre>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">Quasiment rien n\u2019a \u00e9t\u00e9 utilis\u00e9 !! Non seulement l\u2019enveloppe n\u2019a pas boug\u00e9 mais en plus mon journal est toujours quasiment vide. J\u2019en profite pour regarder ce qui se trouve dans ces 3% de<span> <\/span>journal utilis\u00e9:<\/p>\n<p class=\"MsoNormal\">\n<pre><span lang=\"EN-GB\">select<\/span><span lang=\"EN-GB\"> Operation, COUNT(*) nr_records, SUM([Log Record Length]) totalsize<\/span><\/pre>\n<pre><span lang=\"EN-GB\">from<\/span><span lang=\"EN-GB\"> <span>::<\/span>fn_dblog(<span>null<\/span>,<span>null<\/span>) <\/span><\/pre>\n<pre><span lang=\"EN-GB\">group<\/span><span lang=\"EN-GB\"> <span>by<\/span> Operation <span>order<\/span> <span>by<\/span> COUNT(*) <span>desc<\/span><\/span><\/pre>\n<pre><span lang=\"EN-GB\"> <\/span><\/pre>\n<pre><span lang=\"EN-GB\">Operation<span>                       <\/span>nr_records<span> <\/span> totalsize<\/span><\/pre>\n<pre><span lang=\"EN-GB\">------------------------------- ----------- -----------<\/span><\/pre>\n<pre><span lang=\"EN-GB\">LOP_SET_FREE_SPACE<\/span><span lang=\"EN-GB\"><span>             <\/span><\/span><span lang=\"EN-GB\"><span> <\/span>11111<span> <\/span>      577772<\/span><\/pre>\n<pre><span lang=\"EN-GB\">LOP_SET_BITS<span>                    <\/span>5650<span> <\/span>       328272<\/span><\/pre>\n<pre><span lang=\"EN-GB\">LOP_MODIFY_ROW<span>                  <\/span>1570<span> <\/span>       138852<\/span><\/pre>\n<pre><span lang=\"EN-GB\">LOP_COUNT_DELTA<span>                 <\/span>33<span> <\/span>         6864<\/span><\/pre>\n<pre><span lang=\"EN-GB\">LOP_BUF_WRITE<span>                   <\/span>31<span> <\/span>         59512<\/span><\/pre>\n<pre><span lang=\"NL\">LOP_INSERT_ROWS<span>                 <\/span>27<span> <\/span>         4068<\/span><\/pre>\n<pre><span lang=\"NL\">LOP_ROOT_CHANGE<span>                 <\/span>5<span> <\/span>          480<\/span><\/pre>\n<pre><span lang=\"NL\">LOP_BEGIN_XACT<span>                  <\/span>4<span> <\/span>          432<\/span><\/pre>\n<pre><span lang=\"NL\">LOP_HOBT_DELTA<span>                  <\/span>4<span> <\/span>          256<\/span><\/pre>\n<pre><span lang=\"NL\">LOP_COMMIT_XACT<span>                 <\/span>4<span> <\/span>          208<\/span><\/pre>\n<pre><span lang=\"NL\">LOP_LOCK_XACT<span>                   <\/span>3<span> <\/span>          120<\/span><\/pre>\n<pre><span lang=\"NL\">LOP_HOBT_DDL<span>                    <\/span>2<span> <\/span>          72<\/span><\/pre>\n<pre><span lang=\"EN-GB\">LOP_PREP_XACT<span> <\/span><span>                  <\/span>1<span> <\/span>          68<\/span><\/pre>\n<pre><span lang=\"EN-GB\">LOP_END_CKPT<span>                    <\/span>1<span> <\/span>          136<\/span><\/pre>\n<pre><span lang=\"NL\">LOP_FORMAT_PAGE<span>                 <\/span>1<span> <\/span>          84<\/span><\/pre>\n<pre><span lang=\"NL\">LOP_BEGIN_CKPT<span>                  <\/span>1<span> <\/span>          96<\/span><\/pre>\n<pre><span>LOP_CREATE_ALLOCCHAIN<span>           <\/span>1<span> <\/span>          40<\/span><\/pre>\n<p class=\"MsoNormal\"><span lang=\"EN-GB\"> <\/span><\/p>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">L\u2019op\u00e9rateur logique LOP_SET_FREE_SPACE est typiquement un op\u00e9rateur d\u2019allocation, qui met \u00e0 jour la page PFS du fichier de donn\u00e9e et indique quels sont les pages qui ne sont plus libres pour de futures allocations car elles ont \u00e9t\u00e9 utilis\u00e9es par le SELECT INTO. Si je lance la sauvegarde de mon journal :<\/p>\n<pre><span lang=\"EN-GB\">\r\nProcessed 149 pages for database 'CAPDATA', file 'CAPDATA_log01' on file 1.<\/span><\/pre>\n<pre><span lang=\"EN-GB\">BACKUP LOG successfully processed 11277 pages in 28.242 seconds (3.270 MB\/sec).<\/span><\/pre>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">La sauvegarde fait 90Mb alors qu\u2019il n\u2019y a que 1,5Mb de transactions dans mon journal, parce qu\u2019elle embarque les pages de donn\u00e9es allou\u00e9es par le SELECT INTO.<\/p>\n<p class=\"MsoNormal\">Ex\u00e9cutons maintenant le rebuild de l\u2019index :<\/p>\n<pre><span lang=\"EN-GB\">\r\nALTER<\/span><span lang=\"EN-GB\"> <span>INDEX<\/span> PK_PIECEAPPARTEMENT <span>ON<\/span> PIECEAPPARTEMENT REBUILD WITH<\/span><span lang=\"EN-GB\"> (SORT_IN_TEMPDB = <span>ON<\/span>)<\/span><\/pre>\n<pre><span>\r\n SQL Server Execution Times:<\/span><\/pre>\n<pre><span lang=\"EN-GB\"><span> <\/span>CPU time = 11594 ms,<span> <\/span>elapsed time = <strong>48860 ms<\/strong>.<\/span><\/pre>\n<p class=\"MsoNormal\"><span lang=\"EN-GB\"> <\/span><\/p>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">48 secondes au lieu de 66, et dans le journal:<\/p>\n<pre><span lang=\"EN-GB\">\r\ndbcc<\/span><span lang=\"EN-GB\"> sqlperf(logspace)<\/span><\/pre>\n<pre><span lang=\"EN-GB\">\r\n Database Name<span>   <\/span>Log Size (MB)     Log Space Used (%) Status<\/span><\/pre>\n<pre><span lang=\"EN-GB\">----------------------------------------------------------------------------------------------<\/span><\/pre>\n<pre><span>CAPDATA<span> <\/span>        49,99219<span>           <\/span><strong>5,8515<\/strong><span> <\/span>            0<\/span><\/pre>\n<p class=\"MsoNormal\"><span lang=\"EN-GB\"> <\/span><\/p>\n<p class=\"MsoNormal\">\n<p class=\"MsoNormal\">Et la sauvegarde de journal fait 91 Mb, loin des 5% utilis\u00e9s. L\u00e0 encore, les pages de donn\u00e9es cr\u00e9\u00e9es lors du rebuild sont embarqu\u00e9es dans la sauvegarde.<\/p>\n<p><strong>Conclusion<\/strong>: en mode BULK_LOGGED, pour pouvoir restaurer une op\u00e9ration minimalement logg\u00e9e, le BACKUP LOG est oblig\u00e9 de prendre avec lui les pages de donn\u00e9es allou\u00e9es dans l&#8217;op\u00e9ration. Ici, on ne voit pas de diff\u00e9rence de taille des sauvegardes de journal entre les modes FULL et BULK_LOGGED, mais si en plus des op\u00e9rations minimalement logg\u00e9es, j&#8217;ai des ordres de modifications standards type INSERT\/DELETE,UPDATE, la taille de ma sauvegarde va cro\u00eetre (et le temps de sauvegarde avec) en BULK_LOGGED et d\u00e9passer la taille d&#8217;une sauvegarde en mode FULL. Donc attention \u00e0 l&#8217;espace disponible  sur les disques de sauvegardes le week end pendant la reorg !<\/p>\n<p>David B.<\/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%2F4&#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%2F4&#038;title=Modes%20de%20r%C3%A9cup%C3%A9ration%20et%20journal%20de%20transactions%2C%20%C3%A9pisode%202\" 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=Modes%20de%20r%C3%A9cup%C3%A9ration%20et%20journal%20de%20transactions%2C%20%C3%A9pisode%202&#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%2F4\" 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>Dans l&#8217;article pr\u00e9c\u00e9dent, nous avons vu quels sont les principaux modes de r\u00e9cup\u00e9ration SIMPLE et FULL, et leur effet respectif sur le journal des transactions. Ici nous allons aborder le troisi\u00e8me mode BULK-LOGGED, ses avantages, inconv\u00e9nients et contextes d&#8217;utilisation. Quelques&hellip; <a href=\"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/\" class=\"more-link\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":7993,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,450],"tags":[9,11],"class_list":["post-4","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sqlserver","category-vintage","tag-bulk-logged","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>Modes de r\u00e9cup\u00e9ration et journal de transactions, \u00e9pisode 2 - 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\/modes-de-recuperation-et-journal-de-transactions-episode-2\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Modes de r\u00e9cup\u00e9ration et journal de transactions, \u00e9pisode 2 - Capdata TECH BLOG\" \/>\n<meta property=\"og:description\" content=\"Dans l&#8217;article pr\u00e9c\u00e9dent, nous avons vu quels sont les principaux modes de r\u00e9cup\u00e9ration SIMPLE et FULL, et leur effet respectif sur le journal des transactions. Ici nous allons aborder le troisi\u00e8me mode BULK-LOGGED, ses avantages, inconv\u00e9nients et contextes d&#8217;utilisation. Quelques&hellip; Continuer la lecture &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Capdata TECH BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2008-12-11T17:09:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-20T06:03:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2008\/12\/newspaper-1529884.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"376\" \/>\n\t<meta property=\"og:image:height\" content=\"240\" \/>\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=\"6 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\/modes-de-recuperation-et-journal-de-transactions-episode-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/\"},\"author\":{\"name\":\"David Baffaleuf\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\"},\"headline\":\"Modes de r\u00e9cup\u00e9ration et journal de transactions, \u00e9pisode 2\",\"datePublished\":\"2008-12-11T17:09:55+00:00\",\"dateModified\":\"2023-04-20T06:03:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/\"},\"wordCount\":880,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"keywords\":[\"bulk logged\",\"journal de transactions\"],\"articleSection\":[\"SQL Server\",\"Vintage\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/\",\"url\":\"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/\",\"name\":\"Modes de r\u00e9cup\u00e9ration et journal de transactions, \u00e9pisode 2 - Capdata TECH BLOG\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/#website\"},\"datePublished\":\"2008-12-11T17:09:55+00:00\",\"dateModified\":\"2023-04-20T06:03:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.capdata.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Modes de r\u00e9cup\u00e9ration et journal de transactions, \u00e9pisode 2\"}]},{\"@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":"Modes de r\u00e9cup\u00e9ration et journal de transactions, \u00e9pisode 2 - 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\/modes-de-recuperation-et-journal-de-transactions-episode-2\/","og_locale":"fr_FR","og_type":"article","og_title":"Modes de r\u00e9cup\u00e9ration et journal de transactions, \u00e9pisode 2 - Capdata TECH BLOG","og_description":"Dans l&#8217;article pr\u00e9c\u00e9dent, nous avons vu quels sont les principaux modes de r\u00e9cup\u00e9ration SIMPLE et FULL, et leur effet respectif sur le journal des transactions. Ici nous allons aborder le troisi\u00e8me mode BULK-LOGGED, ses avantages, inconv\u00e9nients et contextes d&#8217;utilisation. Quelques&hellip; Continuer la lecture &rarr;","og_url":"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/","og_site_name":"Capdata TECH BLOG","article_published_time":"2008-12-11T17:09:55+00:00","article_modified_time":"2023-04-20T06:03:22+00:00","og_image":[{"width":376,"height":240,"url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2008\/12\/newspaper-1529884.jpg","type":"image\/jpeg"}],"author":"David Baffaleuf","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"David Baffaleuf","Dur\u00e9e de lecture estim\u00e9e":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/#article","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/"},"author":{"name":"David Baffaleuf","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf"},"headline":"Modes de r\u00e9cup\u00e9ration et journal de transactions, \u00e9pisode 2","datePublished":"2008-12-11T17:09:55+00:00","dateModified":"2023-04-20T06:03:22+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/"},"wordCount":880,"commentCount":0,"publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"keywords":["bulk logged","journal de transactions"],"articleSection":["SQL Server","Vintage"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/","url":"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/","name":"Modes de r\u00e9cup\u00e9ration et journal de transactions, \u00e9pisode 2 - Capdata TECH BLOG","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/#website"},"datePublished":"2008-12-11T17:09:55+00:00","dateModified":"2023-04-20T06:03:22+00:00","breadcrumb":{"@id":"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.capdata.fr\/index.php\/modes-de-recuperation-et-journal-de-transactions-episode-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.capdata.fr\/"},{"@type":"ListItem","position":2,"name":"Modes de r\u00e9cup\u00e9ration et journal de transactions, \u00e9pisode 2"}]},{"@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\/4","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=4"}],"version-history":[{"count":29,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/4\/revisions"}],"predecessor-version":[{"id":9519,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/4\/revisions\/9519"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media\/7993"}],"wp:attachment":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=4"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=4"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=4"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}