Bonjour,
je veux créer un job pour copier une base de données d'une instance de SQL Server 2000 vers un SQL Server 2005 sur un autre serveur.
Pour cela, dans la base de données d'origine,
(1) je crée une sauvegarde vers un fichier,
(2) je copie ce fichier sur le serveur destination,
(3) je restaure la base de données à partir de cette sauvegarde.
J'ai fait ça manuellement, et ça marche bien, je veux maintenant créer un job parce-que je suis fainéant mais je dois le faire souvent.
Pour les étapes 2 et 3, il n'y a pas de problème. Mais pour l'étape 1, je ne sais pas comment, depuis le serveur destination, demander au serveur source de sauvegarder la base de données sur disque.
Pendant tout ce temps, la base de données source ne doit jamais être arrêtée, car elle est toujours utilisée. Sur la base de données destination, par contre, je peux tout faire, elle est utilisée pour le développement.
J'ai essayé le wizard Copy Database, mais il échoue, alors il a fallu que je trouve autre chose.
J'ai vu un une fonctionnalité appelée réplication dans le Management Studio, mais elle n'est pas installée sur le serveur origine, et comme j'ai dit, je ne peux pas mettre la base de données offline, encore moins installer un composant.
Etape 1
Script utilisée pour sauvegarder la base de données. Il marche s'il est executé sur le serveur source :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 BACKUP DATABASE [JunoProd] TO DISK = N'E:\BAK\Juno.bak' WITH RETAINDAYS = 1, NOFORMAT, INIT, NAME = N'JunoProd-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO declare @backupSetId as int select @backupSetId = position from msdb..backupset where database_name=N'JunoProd' and backup_set_id= (select max(backup_set_id) from msdb..backupset where database_name=N'JunoProd' ) if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''JunoProd'' not found.', 16, 1) end RESTORE VERIFYONLY FROM DISK = N'E:\BAK\Juno.bak' WITH FILE = @backupSetId, NOUNLOAD, NOREWIND GO
Les étapes 2 et 3 marchent bien:
Etape 2: (CmdExec)
Etape 3:
Code : Sélectionner tout - Visualiser dans une fenêtre à part copy "\\10.1.0.27\BAK\Juno.bak" "d:\backup\Juno.bak" /Y
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 RESTORE DATABASE [JunoProd] FROM DISK = N'D:\Backup\Juno.bak' WITH FILE = 1, MOVE N'Juno' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\JunoProd.mdf', MOVE N'Juno_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\JunoProd_1.ldf', REPLACE, STATS = 10 GO
Comment faire marcher la première étape, pour un job executé depuis le serveur destination ?
Partager