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)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
copy "\\10.1.0.27\BAK\Juno.bak" "d:\backup\Juno.bak" /Y
Etape 3:
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 ?