Salut à tous,
Je cherche un moyen d'automatiser la purge de mon journal des transactions.
Pour cela je crée la procédure stockée suivante :
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
 
CREATE PROCEDURE PurgeLog
	@DatabaseName varchar(128)
AS
 
-- déclarations et initialisations
DECLARE @LogFileID smallint, @LogFileName nchar(260), @fileid smallint, @filename nchar(260), @status int
 
SET @LogFileID = 0
SET @LogFileName = ''
 
-- recherche le fichier de log de la base de données à purger
DECLARE SysfilesCursor CURSOR FOR
	SELECT [fileid], [filename], [status] FROM sysfiles
 
OPEN SysfilesCursor
 
FETCH NEXT FROM SysfilesCursor
INTO @fileid, @filename, @status
 
WHILE @@FETCH_STATUS = 0
BEGIN
	IF (@status & CAST(0x40 AS INT) =  CAST(0x40 AS INT))
	BEGIN
		SET @LogFileID = @fileid
		SET @LogFileName = @filename
	END
 
	FETCH NEXT FROM SysfilesCursor
	INTO @fileid, @filename, @status
END
 
-- si on a trouvé le fichier de log à purger
IF @LogFileID <> 0
BEGIN
	-- backup (virtuel) du fichier de log
	BACKUP LOG @DatabaseName WITH TRUNCATE_ONLY
 
	-- purge le fichier de log
	DBCC SHRINKFILE(@LogFileName)
END
 
CLOSE SysfilesCursor
 
DEALLOCATE SysfilesCursor
GO
Le probleme c'est que j'ai une erreur sur la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
	-- purge le fichier de log
	DBCC SHRINKFILE(@LogFileName)
Le message d'erreur est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Le paramètre 1 est incorrect pour cette instruction DBCC.
Please help me.
Merci d'avance.