Partager via


Créer une sauvegarde complète de base de données

S’applique à :SQL Server

Cet article explique comment créer une sauvegarde complète de base de données dans SQL Server à l’aide de SQL Server Management Studio, Transact-SQL ou PowerShell.

Pour plus d’informations, consultez sauvegarde et restauration SQL Server avec Stockage Blob Azure et sauvegarde SQL Server vers l’URL du Stockage Blob Azure.

Limites

  • L’instruction BACKUP n’est pas autorisée dans une transaction explicite ni implicite.
  • Les sauvegardes créées par des versions plus récentes de SQL Server ne peuvent pas être restaurées dans les versions antérieures de SQL Server.

Pour obtenir une vue d’ensemble et approfondir les concepts et les tâches de sauvegarde, consultez la vue d’ensemble de la sauvegarde (SQL Server) avant de continuer.

Recommandations

  • À mesure que la taille d’une base de données augmente, les sauvegardes complètes de base de données nécessitent davantage de temps et d’espace de stockage. Pour les bases de données volumineuses, songez à compléter les sauvegardes complètes avec une série de sauvegardes différentielles de base de données.
  • Vous pouvez estimer la taille d’une sauvegarde complète de base de données en utilisant la procédure stockée système sp_spaceused .
  • Par défaut, chaque opération de sauvegarde réussie ajoute une entrée au journal des erreurs SQL Server et au journal des événements système. Si vous sauvegardez fréquemment, les messages de réussite s’accumulent rapidement, ce qui entraîne des journaux d’erreurs énormes, ce qui rend la recherche d’autres messages difficiles. Dans ces cas-là, vous pouvez supprimer ces entrées de journaux de sauvegarde en utilisant l’indicateur de trace 3226 si aucun de vos scripts ne dépend de ces entrées. Pour plus d’informations, consultez Définir des indicateurs de trace avec DBCC TRACEON.

Sécurité

TRUSTWORTHY est défini OFF sur une sauvegarde de base de données. Pour plus d’informations sur la TRUSTWORTHYONdéfinition, consultez les options ALTER DATABASE SET.

À compter de SQL Server 2012 (11.x), les PASSWORD options et MEDIAPASSWORD les options ne sont pas disponibles pour la création de sauvegardes. Vous pouvez toujours restaurer les sauvegardes créées avec des mots de passe.

autorisations

Les autorisations BACKUP DATABASE et BACKUP LOG reviennent par défaut aux membres du rôle serveur fixe sysadmin et des rôles de base de données fixes db_owner et db_backupoperator.

Des problèmes de propriété et d'autorisations sur le fichier physique de l'unité de sauvegarde sont susceptibles de perturber une opération de sauvegarde. Le service SQL Server doit lire et écrire sur l’appareil. Le compte sous lequel le service SQL Server s’exécute doit disposer d’autorisations d’accès en écriture sur l’unité de sauvegarde. Toutefois, sp_addumpdevice, qui ajoute une entrée pour une unité de sauvegarde dans les tables système, ne vérifie pas les autorisations d’accès au fichier. Les problèmes rencontrés dans le fichier physique de l’appareil de sauvegarde peuvent ne pas apparaître tant que la sauvegarde n’est pas utilisée ou qu’une restauration a été tentée.

Utiliser SQL Server Management Studio

Remarque

Lorsque vous spécifiez une tâche de sauvegarde à l’aide de SQL Server Management Studio, vous pouvez générer le script Transact-SQL BACKUP correspondant en sélectionnant le bouton Script , puis en sélectionnant une destination de script.

  1. Après la connexion à l’instance appropriée du moteur de base de données SQL Server, dans l’Explorateur d’objets, développez l’arborescence du serveur.

  2. Développez Bases de données, puis sélectionnez une base de données utilisateur ou développez Bases de données système et sélectionnez une base de données système.

  3. Cliquez avec le bouton droit sur la base de données à sauvegarder, pointez sur Tâches, puis sélectionnez Sauvegarder....

  4. Dans la boîte de dialogue Sauvegarder la base de données , la base de données que vous avez sélectionnée apparaît dans la liste déroulante. (Vous pouvez remplacer la base de données par n’importe quelle autre base de données sur le serveur.)

  5. Dans la liste des types de sauvegarde, sélectionnez un type de sauvegarde. La valeur par défaut est Full.

    Important

    Vous devez effectuer au moins une sauvegarde complète de base de données avant de pouvoir effectuer une sauvegarde différentielle ou de journal des transactions.

  6. Sous Composant de sauvegarde, sélectionnez Base de données.

  7. Dans la section Destination, passez en revue l’emplacement par défaut du fichier de sauvegarde (dans le dossier ../mssql/data).

    Vous pouvez utiliser la liste Sauvegarder pour sélectionner un autre appareil. Sélectionnez Ajouter pour ajouter des objets de sauvegarde et/ou des destinations. Vous pouvez distribuer le jeu de sauvegarde sur plusieurs fichiers pour une vitesse de sauvegarde accrue.

    Pour supprimer une destination de sauvegarde, sélectionnez-la, puis sélectionnez Supprimer. Pour afficher le contenu d’une destination de sauvegarde existante, sélectionnez-le, puis sélectionnez Contenu.

  8. (Facultatif) Passez en revue les autres paramètres disponibles dans les pages Options de support et Options de sauvegarde .

    Pour plus d’informations sur les différentes options de sauvegarde, consultez Sauvegarde de base de données (page Général),Sauvegarde de la base de données (page Options de support) et Sauvegarde de la base de données (page Options de sauvegarde).

  9. Sélectionnez OK pour démarrer la sauvegarde.

  10. Une fois la sauvegarde terminée, sélectionnez OK pour fermer la boîte de dialogue SQL Server Management Studio.

Informations supplémentaires

  • Après la création d’une sauvegarde de base de données complète, vous pouvez créer une sauvegarde de base de données différentielle ou une sauvegarde du journal des transactions.

  • (Facultatif) Vous pouvez cocher la case à cocher Copier uniquement pour créer une sauvegarde en copie seule. Une sauvegarde de copie uniquement est une sauvegarde SQL Server indépendante de la séquence de sauvegardes SQL Server conventionnelles. Pour plus d’informations, consultez Sauvegardes en copie seule. La sauvegarde avec copie uniquement n’est pas disponible pour le type de sauvegarde Différentielle.

  • L’option Remplacer le support est désactivée sur la page Options de support si vous sauvegardez vos données vers une URL.

Exemples

Pour les exemples suivants, créez une base de données de test avec le code Transact-SQL suivant :

USE [master]
GO

CREATE DATABASE [SQLTestDB]
GO

USE [SQLTestDB]
GO
CREATE TABLE SQLTest
   (
      ID INT NOT NULL PRIMARY KEY,
      c1 VARCHAR(100) NOT NULL,
      dt1 DATETIME NOT NULL DEFAULT getdate()
   );
GO

USE [SQLTestDB]
GO

INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1')
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2')
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3')
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4')
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5')
GO

SELECT * FROM SQLTest
GO

R : Sauvegarde complète sur disque à l’emplacement par défaut

Dans cet exemple, la SQLTestDB base de données est sauvegardée sur le disque à l’emplacement de sauvegarde par défaut.

  1. Après la connexion à l’instance appropriée du moteur de base de données SQL Server, dans l’Explorateur d’objets, développez l’arborescence du serveur.

  2. Développez Bases de données, cliquez avec le bouton droit sur SQLTestDB, pointez sur Tâches, puis sélectionnez Sauvegarder….

  3. Cliquez sur OK.

  4. Une fois la sauvegarde terminée, sélectionnez OK pour fermer la boîte de dialogue SQL Server Management Studio.

Capture d’écran montrant les étapes de création d’une sauvegarde.

B. Sauvegarde complète sur disque vers un emplacement non définie

Dans cet exemple, la SQLTestDB base de données est sauvegardée sur disque à un emplacement que vous choisissez.

  1. Après la connexion à l’instance appropriée du moteur de base de données SQL Server, dans l’Explorateur d’objets, développez l’arborescence du serveur.

  2. Développez Bases de données, cliquez avec le bouton droit sur SQLTestDB, pointez sur Tâches, puis sélectionnez Sauvegarder….

  3. Dans la page Général de la section Destination, sélectionnez Disque dans la liste Sauvegarder.

  4. Sélectionnez Supprimer jusqu’à ce que tous les fichiers de sauvegarde existants soient supprimés.

  5. Sélectionnez Ajouter. La boîte de dialogue Sélectionner la destination de sauvegarde s’ouvre.

  6. Entrez un chemin d’accès valide et un nom de fichier dans la zone Nom de fichier . Utilisez .bak comme extension pour simplifier la classification du fichier.

  7. Sélectionnez OK, puis de nouveau OK pour lancer la sauvegarde.

  8. Une fois la sauvegarde terminée, sélectionnez OK pour fermer la boîte de dialogue SQL Server Management Studio.

Capture d’écran montrant comment ajouter ou supprimer un emplacement de sauvegarde.

Chapitre C. Créer une sauvegarde chiffrée

Dans cet exemple, la SQLTestDB base de données est sauvegardée avec le chiffrement à l’emplacement de sauvegarde par défaut.

  1. Après la connexion à l’instance appropriée du moteur de base de données SQL Server, dans l’Explorateur d’objets, développez l’arborescence du serveur.

  2. Développez Bases de données, développez Bases de données système, cliquez avec le bouton masterdroit, puis sélectionnez Nouvelle requête pour ouvrir une fenêtre de requête avec une connexion à votre SQLTestDB base de données.

  3. Exécutez les commandes suivantes pour créer une clé principale de base de données et un certificat dans la master base de données.

    -- Create the master key.
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
    
    -- If the master key already exists, open it in the same session that you create the certificate. (See next step.)
    OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>'
    
    -- Create the certificate encrypted by the master key.
    CREATE CERTIFICATE MyCertificate
    WITH SUBJECT = 'Backup Cert', EXPIRY_DATE = '20201031';
    
  4. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur dans le nœud SQLTestDB, pointez sur Tâches, puis sélectionnez Sauvegarder….

  5. Dans la page Options du média, dans la section Remplacer le média , sélectionnez Sauvegarder dans un nouvel ensemble multimédia et effacez tous les jeux de sauvegarde existants.

  6. Dans la page Options de sauvegarde , dans la section Chiffrement , sélectionnez Chiffrer la sauvegarde.

  7. Dans la liste d’algorithmes , sélectionnez AES 256.

  8. Dans la liste des clés certificat ou asymétrique , sélectionnez MyCertificate.

  9. Cliquez sur OK.

Capture d’écran montrant les étapes de création d’une sauvegarde chiffrée.

D. Sauvegarder vers le stockage Blob Azure

Cet exemple crée une sauvegarde complète de la base de données vers SQLTestDB stockage Blob Azure. L’exemple est écrit avec l’hypothèse que vous disposez déjà d’un compte de stockage avec un conteneur d’objets blob. L’exemple crée une signature d’accès partagé. L’exemple échoue si le conteneur a une signature d’accès partagé existante.

Si vous n’avez pas de conteneur de stockage d’objets blob dans un compte de stockage, créez-en un avant de continuer. Consultez Création d’un compte de stockage universel et Création d’un conteneur.

  1. Après la connexion à l’instance appropriée du moteur de base de données SQL Server, dans l’Explorateur d’objets, développez l’arborescence du serveur.

  2. Développez Bases de données, cliquez avec le bouton droit sur SQLTestDB, pointez sur Tâches, puis sélectionnez Sauvegarder….

  3. Dans la page Général , dans la section Destination , sélectionnez l’URL dans la liste Sauvegarder vers la liste.

  4. Sélectionnez Ajouter. La boîte de dialogue Sélectionner la destination de sauvegarde s’ouvre.

  5. Si vous avez précédemment inscrit le conteneur de stockage Azure que vous souhaitez utiliser avec SQL Server Management Studio, sélectionnez-le. Sinon, sélectionnez Nouveau conteneur pour inscrire un nouveau conteneur.

  6. Dans la boîte de dialogue Se connecter à un abonnement Microsoft , connectez-vous à votre compte.

  7. Dans la zone Sélectionner un compte de stockage , sélectionnez votre compte de stockage.

  8. Dans la zone Sélectionner un conteneur d’objets blob, sélectionnez votre conteneur d’objets blob.

  9. Dans la zone Calendrier Expiration de la stratégie d’accès partagé, sélectionnez une date d’expiration pour la stratégie d’accès partagé que vous créez dans cet exemple.

  10. Sélectionnez Créer des informations d’identification pour générer une signature d’accès partagé et des informations d’identification dans SQL Server Management Studio.

  11. Sélectionnez OK fermer la boîte de dialogue Se connecter à un abonnement Microsoft .

  12. Dans la zone Fichier de sauvegarde , modifiez le nom du fichier de sauvegarde si vous le souhaitez.

  13. Sélectionnez OK pour fermer la boîte de dialogue Sélectionner une destination de sauvegarde .

  14. Sélectionnez OK pour démarrer la sauvegarde.

  15. Une fois la sauvegarde terminée, sélectionnez OK pour fermer la boîte de dialogue SQL Server Management Studio.

Remarque

La sauvegarde vers le stockage Blob à l’aide d’identités managées n’est actuellement pas prise en charge.

Utiliser Transact-SQL

Créez une sauvegarde complète de base de données en exécutant l’instruction BACKUP DATABASE , en spécifiant :

  • le nom de la base de données à sauvegarder ;
  • l'unité de sauvegarde où est écrite la sauvegarde complète de la base de données.

La syntaxe Transact-SQL de base nécessaire pour une sauvegarde de base de données complète est la suivante :

BACKUP DATABASE <database>
TO <backup_device> [ , ...n ]
[ WITH <with_options> [ , ...o ] ];
Choix Descriptif
<database> Base de données à sauvegarder.
<backup_device> [ , ...n ] Spécifie une liste de 1 à 64 périphériques de sauvegarde à utiliser pour l’opération de sauvegarde. Vous pouvez spécifier un périphérique de sauvegarde physique ou spécifier un périphérique de sauvegarde logique correspondant, s’il en est déjà défini. Pour spécifier un périphérique de sauvegarde physique, utilisez l’option ou DISK l’option TAPE suivante :

{ DISK | TAPE } =physical_backup_device_name

Pour plus d’informations, consultez Unités de sauvegarde (SQL Server).
WITH <with_options> [ , ...o ] Permet de spécifier une ou plusieurs options o. Informations sur certaines des options de base WITH suivantes.

Si vous le souhaitez, spécifiez une ou plusieurs WITH options. Quelques options de base WITH sont décrites ici. Pour plus d’informations sur toutes les WITH options, consultez BACKUP.

Options de jeu WITH de sauvegarde de base :

  • { COMPRESSION | NO_COMPRESSION }. Dans SQL Server 2008 (10.0.x) Enterprise et versions ultérieures uniquement, spécifie si la compression de sauvegarde est effectuée sur la sauvegarde, en remplaçant la valeur par défaut au niveau du serveur.
  • CHIFFREMENT (ALGORITHME, CERTIFICAT DE SERVEUR | CLÉ ASYMÉTRIQUE). Dans SQL Server 2014 ou version ultérieure uniquement, spécifie l’algorithme de chiffrement à utiliser et le certificat ou la clé asymétrique à utiliser pour sécuriser le chiffrement.
  • DESCRIPTION = { 'text' | @text_variable }. Spécifie le texte de forme libre qui décrit le jeu de sauvegarde. La chaîne peut compter jusqu'à 255 caractères.
  • NAME = { backup_set_name | @backup_set_name_var }. Spécifie le nom du jeu de sauvegarde. Les noms peuvent contenir jusqu'à 128 caractères. Si NAME ce n’est pas spécifié, il est vide.

Par défaut, BACKUP ajoute la sauvegarde à un support de sauvegarde existant, préservant les jeux de sauvegarde existants. Pour spécifier explicitement cette configuration, utilisez l’option NOINIT . Pour plus d’informations sur l’ajout à des jeux de sauvegarde existants, consultez Jeux de supports, familles de supports et jeux de sauvegarde (SQL Server).

Pour mettre en forme le support de sauvegarde, utilisez l’option FORMAT suivante :

FORMAT [ , MEDIANAME = { media_name | @media_name_variable } ] [ , MEDIADESCRIPTION = { text | @text_variable } ]

Utilisez la FORMAT clause lorsque vous utilisez un média pour la première fois ou lorsque vous souhaitez remplacer toutes les données existantes. Assignez éventuellement un nom et une description au nouveau support.

Important

Soyez prudent lorsque vous utilisez la FORMAT clause de l’instruction BACKUP , car cette option détruit les sauvegardes qui ont été précédemment stockées sur le support de sauvegarde.

Exemples

Pour les exemples suivants, créez une base de données de test avec le code Transact-SQL suivant :

USE [master]
GO

CREATE DATABASE [SQLTestDB]
GO

USE [SQLTestDB]
GO
CREATE TABLE SQLTest (
   ID INT NOT NULL PRIMARY KEY,
   c1 VARCHAR(100) NOT NULL,
   dt1 DATETIME NOT NULL DEFAULT GETDATE()
)
GO

USE [SQLTestDB]
GO

INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1')
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2')
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3')
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4')
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5')
GO

SELECT * FROM SQLTest
GO

R : Sauvegarder sur une unité de disque

L’exemple suivant sauvegarde la base de données complète SQLTestDB sur le disque. Il utilise FORMAT pour créer un jeu de supports.

USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO DISK = 'c:\tmp\SQLTestDB.bak'
   WITH FORMAT,
      MEDIANAME = 'SQLServerBackups',
      NAME = 'Full Backup of SQLTestDB';
GO

B. Sauvegarder sur un périphérique à bandes

L’exemple suivant sauvegarde la base de données complète SQLTestDB sur bande. Il ajoute la sauvegarde aux sauvegardes précédentes.

USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
   TO TAPE = '\\.\Tape0'
   WITH NOINIT,
      NAME = 'Full Backup of SQLTestDB';
GO

Chapitre C. Sauvegarder sur un périphérique à bandes logique

L'exemple suivant crée une unité de sauvegarde logique pour un périphérique à bandes. L’exemple sauvegarde ensuite la base de données complète SQLTestDB sur cet appareil.

-- Create a logical backup device,
-- SQLTestDB_Bak_Tape, for tape device \\.\tape0.
USE master;
GO
EXEC sp_addumpdevice 'tape', 'SQLTestDB_Bak_Tape', '\\.\tape0'; USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
   TO SQLTestDB_Bak_Tape
   WITH FORMAT,
      MEDIANAME = 'SQLTestDB_Bak_Tape',
      MEDIADESCRIPTION = '\\.\tape0',
      NAME = 'Full Backup of SQLTestDB';
GO

Utiliser PowerShell

Utilisez l’applet de Backup-SqlDatabase commande. Pour indiquer explicitement une sauvegarde complète de base de données, spécifiez le -BackupAction paramètre avec sa valeur par défaut. Database Ce paramètre est facultatif pour les sauvegardes complètes de base de données.

Remarque

Ces exemples nécessitent le module SqlServer. Pour déterminer s’il est installé, exécutez Get-Module -Name SqlServer. Pour l’installer, exécutez Install-Module -Name SqlServer une session d’administrateur de PowerShell.

Pour plus d’informations, consultez Fournisseur PowerShell SQL Server.

Important

Si vous ouvrez une fenêtre PowerShell à partir de SQL Server Management Studio (SSMS) pour vous connecter à une instance de SQL Server, vous pouvez omettre la partie d’informations d’identification, car vos informations d’identification dans SSMS sont automatiquement utilisées pour établir la connexion entre PowerShell et votre instance SQL Server.

Exemples

R : Sauvegarde complète (locale)

L'exemple suivant crée une sauvegarde complète de la base de données <myDatabase> à l'emplacement de sauvegarde par défaut de l'instance de serveur Computer\Instance. Si vous le souhaitez, cet exemple spécifie -BackupAction Database.

Pour obtenir des exemples de syntaxe complète, consultez Backup-SqlDatabase.

$credential = Get-Credential

Backup-SqlDatabase -ServerInstance Computer[\Instance] -Database <myDatabase> -BackupAction Database -Credential $credential

B. Sauvegarde complète vers Azure

L’exemple suivant crée une sauvegarde complète de la base de données <myDatabase> sur l’instance vers le <myServer> stockage Blob. Une stratégie d’accès stockée a été créée avec des droits de lecture, écriture et liste. Les informations d’identification SQL Server ont https://<myStorageAccount>.blob.core.windows.net/<myContainer>été créées à l’aide d’une signature d’accès partagé associée à la stratégie d’accès stockée. La commande utilise le $backupFile paramètre pour spécifier l’emplacement (URL) et le nom du fichier de sauvegarde.

$credential = Get-Credential
$container = 'https://<myStorageAccount>blob.core.windows.net/<myContainer>'
$fileName = '<myDatabase>.bak'
$server = '<myServer>'
$database = '<myDatabase>'
$backupFile = $container + '/' + $fileName

Backup-SqlDatabase -ServerInstance $server -Database $database -BackupFile $backupFile -Credential $credential