{"id":514,"date":"2012-08-22T00:00:19","date_gmt":"2012-08-21T22:00:19","guid":{"rendered":"http:\/\/www.sqlserver.fr\/blog\/?p=514"},"modified":"2026-05-02T14:31:02","modified_gmt":"2026-05-02T12:31:02","slug":"backup-copy_only","status":"publish","type":"post","link":"https:\/\/www.sqlserver.fr\/blog\/backup-copy_only\/","title":{"rendered":"Backup COPY_ONLY"},"content":{"rendered":"<p>Il est assez souvent n\u00e9glig\u00e9 par les administrateurs de syst\u00e8mes SQL Server que le fait de donner un peu trop de droits aux gestionnaires applicatifs de bases applicatives peut \u00eatre n\u00e9faste \u00e0 la gestion de la s\u00e9curit\u00e9 des donn\u00e9es. Notamment, le fait de distribuer \u00e0 tout va les droits de sauvegardes de bases de donn\u00e9es peut au final nuire au plan de sauvegarde global, et m\u00eame le mettre totalement \u00e0 plat.<!--more--><\/p>\n<p>SQL Server propose trois types de sauvegardes de bases de donn\u00e9es :<\/p>\n<ul>\n<li>les sauvegardes compl\u00e8tes<\/li>\n<li>les sauvegardes diff\u00e9rentielles<\/li>\n<li>les sauvegardes de journaux de transactions<\/li>\n<\/ul>\n<p>Nous nous concentrerons ici sur les deux premiers types, et nous montrerons notamment un cas relativement simple dans lequel une sauvegarde mal ma\u00eetris\u00e9e peut emp\u00eacher une restauration de base de donn\u00e9es normalement disponible d&rsquo;apr\u00e8s le plan de sauvegarde.<\/p>\n<p>La sauvegarde compl\u00e8te, comme son nom l&rsquo;indique, permet de faire une copie de l&rsquo;ensemble des donn\u00e9es telles que disponibles \u00e0 l&rsquo;instant t.<\/p>\n<p>La sauvegarde diff\u00e9rentielle contient les donn\u00e9es modifi\u00e9es depuis la derni\u00e8re sauvegarde compl\u00e8te. Ainsi, si l&rsquo;on effectue par exemple une sauvegarde compl\u00e8te tous les dimanches soirs et une sauvegarde diff\u00e9rentielle tous les autres soirs de la semaine, chaque sauvegarde diff\u00e9rentielle s&rsquo;appuiera sur les donn\u00e9es de la sauvegarde compl\u00e8te du dimanche pr\u00e9c\u00e9dent.<\/p>\n<p><a href=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-689\" title=\"SavePlan\" src=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan-620x215.png\" alt=\"\" width=\"620\" height=\"215\" srcset=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan-620x215.png 620w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan-300x104.png 300w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan.png 892w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/a><\/p>\n<p>Ceci \u00e9tant dit, supposons que l&rsquo;administrateur du serveur attribue le r\u00f4le db_backupoperator (ou m\u00eame le r\u00f4le db_owner) \u00e0 un responsable applicatif. Ce responsable applicatif peut avoir besoin d&rsquo;une sauvegarde de la base de donn\u00e9es \u00e0 un moment pr\u00e9cis (par exemple lorsqu&rsquo;un utilisateur lui signale un probl\u00e8me fonctionnel). Et sans forc\u00e9ment le savoir, il peut potentiellement mettre totalement \u00e0 plat le processus de sauvegarde principal.<\/p>\n<p>Ainsi, supposons que le mercredi en milieu de journ\u00e9e, le responsable fonctionnel r\u00e9alise une sauvegarde compl\u00e8te de la base de donn\u00e9es, dans le but de r\u00e9cup\u00e9rer ce fichier de backup et de le transf\u00e9rer au support niveau 3 pour analyse. S&rsquo;il n&rsquo;applique pas de processus particulier, les sauvegarde diff\u00e9rentielles planifi\u00e9es automatiquement le soir s&rsquo;appuieront jusqu&rsquo;\u00e0 la fin de semaine sur cette sauvegarde \u00ab\u00a0sauvage\u00a0\u00bb. Le processus standard de restauration, consistant \u00e0 restaurer le backup complet du dimanche soir suivi du backup diff\u00e9rentiel souhait\u00e9, ne sera donc plus valable pour cette fin de semaine.<\/p>\n<p><a href=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-690\" title=\"SavePlan2\" src=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan2-620x222.png\" alt=\"\" width=\"620\" height=\"222\" srcset=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan2-620x222.png 620w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan2-300x107.png 300w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan2.png 894w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/a><\/p>\n<p>Pour \u00e9viter ce genre de m\u00e9saventure, il convient de former les personnes habilit\u00e9s \u00e0 effectuer des sauvegardes de bases de donn\u00e9es\u00a0\u00e0 la\u00a0sauvegarde \u00ab\u00a0pour copie\u00a0\u00bb. Ces sauvegardes enregistrent les m\u00eames donn\u00e9es que les sauvegardes par d\u00e9faut,\u00a0\u00e0 la diff\u00e9rence pr\u00e8s qu&rsquo;elles ne viennent pas s&rsquo;intercaler dans un cycle de sauvegardes compl\u00e8tes-diff\u00e9rentielles.<\/p>\n<p><a href=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-691\" title=\"SavePlan3\" src=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan3-620x218.png\" alt=\"\" width=\"620\" height=\"218\" srcset=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan3-620x218.png 620w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan3-300x105.png 300w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/SavePlan3.png 895w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/a>Pour utiliser ce genre de sauvegardes, deux possibilit\u00e9s :<\/p>\n<ul>\n<li>soit via\u00a0l&rsquo;interface graphique de SQL Server Management Studio<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/Backup.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-692\" title=\"Backup\" src=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/Backup-620x556.png\" alt=\"\" width=\"620\" height=\"556\" srcset=\"https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/Backup-620x556.png 620w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/Backup-300x269.png 300w, https:\/\/www.sqlserver.fr\/blog\/wp-content\/uploads\/2012\/08\/Backup.png 704w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/a><\/p>\n<ul>\n<li>soit via une commande T-SQL<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">BACKUP DATABASE [Test]\r\n\tTO  DISK = N'C:\\Program Files\\Microsoft SQL Server\\MSSQL11.MSSQLSERVER\\MSSQL\\Backup\\Test.bak'\r\n\tWITH  COPY_ONLY\r\n\t\t, NOFORMAT, NOINIT,  NAME = N'Test-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10\r\nGO<\/pre>\n<p>Et si la consigne n&rsquo;arrive pas \u00e0 passer, d&rsquo;autres solutions sont toujours possibles, comme par exemple le fait d&rsquo;enlever le droit de sauvegarde, et de le remplacer par l&rsquo;acc\u00e8s \u00e0 une proc\u00e9dure stock\u00e9e qui fera l&rsquo;op\u00e9ration comme il se doit&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il est assez souvent n\u00e9glig\u00e9 par les administrateurs de syst\u00e8mes SQL Server que le fait de donner un peu trop de droits aux gestionnaires applicatifs de bases applicatives peut \u00eatre n\u00e9faste \u00e0 la gestion de la s\u00e9curit\u00e9 des donn\u00e9es. Notamment, &hellip; <a href=\"https:\/\/www.sqlserver.fr\/blog\/backup-copy_only\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-514","post","type-post","status-publish","format-standard","hentry","category-article_sql"],"_links":{"self":[{"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/posts\/514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/comments?post=514"}],"version-history":[{"count":19,"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/posts\/514\/revisions"}],"predecessor-version":[{"id":1940,"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/posts\/514\/revisions\/1940"}],"wp:attachment":[{"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/media?parent=514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/categories?post=514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlserver.fr\/blog\/wp-json\/wp\/v2\/tags?post=514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}