Comment faire pour sauvegarder une base de données Microsoft Data Engine à l'aide de Transact-SQL.

Exclusion de responsabilité du contenu obsolète de la base de connaissances

Cet article a été rédigé sur les produits pour lesquels Microsoft n’offre plus aucune prise en charge. Par conséquent, cet article est proposé « en l’état » et ne sera plus mis à jour.

Résumé

SQL Client Tools ne fait pas partie de l'installation Microsoft Data Engine (MSDE). Par conséquent, pour sauvegarder une base de données MSDE, vous pouvez utiliser l'instruction BACKUP DATABASE de Transact-SQL présentée dans cet article.

Plus d'informations

Si vous disposez de Microsoft Access 2000, vous pouvez utiliser la commande BACKUP du menu Utilitaires de base de données d'un projet Access pour sauvegarder une base de données MSDE. Si SQL Client Tools est installé, vous pouvez utiliser SQL Enterprise Manager pour sauvegarder une base de données MSDE.

Toutefois, si MSDE uniquement est installé, vous ne disposez pas de ces options. Par conséquent, pour sauvegarder une base de données MSDE, vous pouvez utiliser l'instruction BACKUP DATABASE de Transact-SQL et exécuter Osql.exe (un outil de requête de ligne de commande).


Pour plus d'informations sur toutes les procédures stockées utilisées dans cet article, consultez la documentation en ligne de SQL Server.


Remarque Le code suivant illustre l'utilisation de diverses procédures stockées avec MSDE pour effectuer une sauvegarde. Ce code ne sauvegarde pas votre base de données stratégique « en l'état » et peut nécessiter plusieurs modifications pour être exécuté dans votre environnement ; par exemple, le nom de la base de données, le nom du serveur, etc..

  • Collez le script Transact-SQL suivant dans le Bloc-notes, puis enregistrez-le dans un fichier nommé MyBackupScript.sql:
    --This Transact-SQL script creates a backup job and calls sp_start_job to run the job.

    -- Create job.
    -- You may specify an e-mail address, commented below, and/or pager, etc.
    -- For more details about this option or others, see SQL Server Books Online.
    USE msdb
    EXEC sp_add_job @job_name = 'myTestBackupJob',
    @enabled = 1,
    @description = 'myTestBackupJob',
    @owner_login_name = 'sa',
    @notify_level_eventlog = 2,
    @notify_level_email = 2,
    @notify_level_netsend =2,
    @notify_level_page = 2
    -- @notify_email_operator_name = 'email name'
    go

    -- Add job step (backup data).
    USE msdb
    EXEC sp_add_jobstep @job_name = 'myTestBackupJob',
    @step_name = 'Backup msdb Data',
    @subsystem = 'TSQL',
    @command = 'BACKUP DATABASE msdb TO DISK = ''c:\msdb.dat_bak''',
    @on_success_action = 3,
    @retry_attempts = 5,
    @retry_interval = 5
    go

    -- Add job step (backup log).
    USE msdb
    EXEC sp_add_jobstep @job_name = 'myTestBackupJob',
    @step_name = 'Backup msdb Log',
    @subsystem = 'TSQL',
    @command = 'BACKUP LOG msdb TO DISK = ''c:\msdb.log_bak''',
    @on_success_action = 1,
    @retry_attempts = 5,
    @retry_interval = 5
    go

    -- Add the target servers.
    USE msdb
    EXEC sp_add_jobserver @job_name = 'myTestBackupJob', @server_name = N'(local)'

    -- Run job. Starts the job immediately.
    USE msdb
    EXEC sp_start_job @job_name = 'myTestBackupJob'
  • À partir de la ligne de commande, utilisez la syntaxe osql suivante pour exécuter le script Transact-SQL :
       OSQL -Usa -PmyPasword -i myBackupScript.sql -n
Vous souhaiterez peut-être planifier le travail plutôt que de l'exécuter manuellement. Pour cela, vous pouvez utiliser le code ci-dessus pour créer ce travail. Plutôt que d'appeler la procédure stockée sp_start_job pour exécuter le travail manuellement, vous pouvez utiliser la procédure stockée sp_add_jobschedule pour le configurer pour être exécuté à une date et une heure spécifiques. L'Agent SQL gère la planification des travaux. Ce code illustre l'utilisation de la procédure stockée sp_add_jobschedule :

-- Use the job creation code from the previous sample and call sp_add_jobschedule instead of sp_start_job.
-- Schedule job.
USE msdb
EXEC sp_add_jobschedule @job_name = 'myTestBackupJob',
@name = 'ScheduledBackup_msdb',
@freq_type = 4, --daily
@freq_interval = 1, --once
@active_start_time = '153000' --(3:30 pm) 24hr HHMMSS.
go

--Use the following code to remove or delete the backup job, created earlier, and then remove the job from the Scheduler.
-- Delete scheduled job.
USE msdb
EXEC sp_delete_jobschedule @job_name = N'myTestBackupJob',
@name = N'ScheduledBackup_msdb'

-- Delete job.
USE msdb
EXEC sp_delete_job @job_name = N'myTestBackupJob'
Si vous ne souhaitez pas créer un travail de sauvegarde ou une sauvegarde planifiée, vous pouvez exécuter directement l'instruction BACKUP DATABASE (ou BACKUP LOG) avec osql à partir de la ligne de commande. Si vous utilisez l'argument -Q, osql exécute l'instruction Transact-SQL, puis se ferme. Par exemple :

OSQL -Usa -PmyPasword -n -Q "BACKUP DATABASE msdb TO DISK = 'c:\msdb.dat_bak'"
Vous souhaiterez peut-être spécifier d'autres options avec l'instruction BACKUP DATABASE. Pour plus d'informations sur les options disponibles, consultez la documentation en ligne de SQL Server à l'adresse suivante :

http://download.microsoft.com/download/SQL70/File/2/Win98/En-US/sqlbol.exe

Références

Pour télécharger une version mise à jour de la documentation en ligne de SQL Server 2000, reportez-vous au site Web de Microsoft à l'adresse suivante :

Pour télécharger une version mise à jour de la documentation en ligne de SQL Server 7.0, reportez-vous au site Web de Microsoft à l'adresse suivante :

Rubriques de la documentation en ligne SQL Server : « Sauvegardes de la base de données », « sp_add_job », « sp_add_jobstep », « sp_add_jobserver », « sp_start_job », « sp_add_jobschedule », « sp_delete_jobschedule », « sp_delete_job »

Propriétés

ID d'article : 241397 - Dernière mise à jour : 24 nov. 2006 - Révision : 1

Commentaires