Salut,
J'ai fait une procédure stockée qui me permet de restaurer une base en lui passant le nom en paramètre.
Le problème c'est que quand je la lance, j'ai le résultat suivant :
Voici ma procédure stockée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Impossible de remplacer le fichier 'D:\MSSQL\Data\MSSQL\Data\ext_projets.MDF'. il est utilisé par la base de données '@Database_Name'.
Savez vous pourquoi?
Code : 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 CREATE PROCEDURE dbo.RestoreDataBase ( @Database_Name nvarchar(128) ) AS BEGIN declare @Reset nvarchar(128) declare @File_Name nvarchar(128) declare @MoveData_Name nvarchar(128), @ToData_Name nvarchar(128) declare @MoveLog_Name nvarchar(128), @ToLog_Name nvarchar(128) declare @FullRequest varchar(400) set @Reset = 'master.dbo.killdbspids '''+@Database_Name+'''' set @File_Name = '''D:\recup_idefix_sql\' + @Database_Name + '.dat''' set @MoveData_Name = 'N'+''''+@Database_Name+'_Data''' set @ToData_Name = 'N'+'''D:\MSSQL\Data\MSSQL\Data\'+@Database_Name+'.MDF''' set @MoveLog_Name = ''''+@Database_Name+'_Log''' set @ToLog_Name = '''D:\MSSQL\Data\MSSQL\Data\'+@Database_Name+'_log.LDF''' print @File_Name print @MoveData_Name print @ToData_Name print @MoveLog_Name print @ToLog_Name --exec master.dbo.killdbspids @Database_Name set @FullRequest = 'RESTORE DATABASE ['+@Database_Name+'] FROM DISK = '+@File_Name +' WITH FILE = 1, MOVE '+@MoveData_Name+' TO '+@ToData_Name+', MOVE '+@MoveLog_Name+' TO '+@ToLog_Name+', NOUNLOAD, REPLACE, STATS = 10' print @Reset print @FullRequest exec sp_sqlexec @Reset exec sp_sqlexec @FullRequest END GO
Merci d'avance
Nixonne
Partager