Bonjour,
Avant de commencer, sachez qu'SQL Server n'est pas un gestionnaire de fichiers.
Vous pouvez néanmoins écrire quelque chose comme :
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
| CREATE PROCEDURE usp_SupprimeDossier
@UNCDossierRacine VARCHAR(256),
@NomDossier VARCHAR(256)
AS
BEGIN
SET NOCOUNT ON
-- Ajout de l'antislach à l'UNC si elle n'est pas présente
IF SUBSTRING(@UNCDossierRacine, LEN(@UNCDossierRacine) - 1, 1) <> '\'
BEGIN
SET @UNCDossierRacine = @UNCDossierRacine + '\'
END
-- Activation de la procédure stockée étendue xp_cmdshell le cas échéant
IF
(
SELECT value_in_use
FROM sys.configurations
WHERE name = 'xp_cmdshell'
) <> 1
BEGIN
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
EXEC sp_configure 'show advanced options', 0
RECONFIGURE
END
-- Suppression du dossier recherché
DECLARE @TbDossiersRepertoire TABLE
(
NomDossier VARCHAR(256)
)
INSERT INTO @TbDossiersRepertoire
EXEC xp_subdirs @UNCDossierRacine
IF EXISTS
(
SELECT *
FROM @TbDossiersRepertoire
WHERE NomDossier = @NomDossier
)
BEGIN
DECLARE @CommandeDOS VARCHAR(256)
SET @CommandeDOS = 'RMDIR /S /Q ' + @UNCDossierRacine + @NomDossier
-- PRINT @CommandeDOS
EXEC master.dbo.xp_cmdshell @CommandeDOS, NO_OUTPUT
END
END |
Et pour tester :
EXEC dbo.usp_SupprimeDossier 'C:\', 'ElSuket'
@++
Partager