Le seul moyen "safe" de réduire la base est de le faire dans le logiciel par la fonction "Sauvegarde fiscale" qui permet de supprimer les PDF de la période archivée.
Sinon on peut à intervalle régulier faire tourner un script de compression des PDF (le Filestream Sage100 n'est utilisé que pour ça) :
- Arrêter le service SQL
- Compression des PDF situés dans répertoire Filestream avec Ghostscript
-
Pièce jointe 591053
-
Saisir dans un fichier cmd le code suivant (code trouvé je ne sais plus où que j'ai modifié)
Code:
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
| @echo off
setlocal EnableDelayedExpansion
rem ghostscript executable name
set "ghostscript="""C:\Program Files\gs\gs9.52\bin\gswin64c.exe""""
rem directories to scan for files
set "filesDir[0]="""E:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\XXXXXXXXXXX\b2dbcfed-3212-4abc-b4af-8bae9b26cc62\211847f9-66be-4e63-9b71-362346cd5920""""
rem extension of files to be scanned
REM set "ext=.pdf"
set "ext="
rem new file be creation or input file overwrite
set "createNewPDFs=0"
rem file prefix for new files (if they should be created)
set "filepre=compr_"
rem loop over all directories defined in filesDir array
for /f "tokens=2 delims==" %%d in ('set filesDir[') do (
if exist "%%~d" (
pushd "%%~d"
rem loop over all files in all (sub)directories with given extension
REM for /f "delims=*" %%f in ('dir "*.%ext%" /b /s /a:-d') do (
for /f "delims=*" %%f in ('dir "*%ext%" /b /s /a:-d') do (
if [%createNewPDFs%] EQU [1] (
%ghostscript% -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile="%%~dpf%filepre%%%~nxf" "%%~f"
) else (
%ghostscript% -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile="%TEMP%\%%~nxf" "%%~f"
for %%t in ("%TEMP%\%%~nxf") do ( set "newSize=%%~zt" )
for %%t in ("%%~f") do ( set "oldSize=%%~zt" )
if [!newSize!] LSS [!oldSize!] (
rem new file is smaller --> overwrite
move /y "%TEMP%\%%~nxf" "%%~f"
) else (
rem new file is greater --> delete it of the temp dir
del "%TEMP%\%%~nxf"
)
)
)
popd
)
) |
Modifier la ligne 5 du fichier avec le chemin de l’exécutable Ghostscript.
Modifier la ligne 8 du fichier avec le chemin du répertoire contenant les PDF :
Exécuter le fichier. Un exemple de durée : trois heures pour 11400 fichiers
- Dans l’exemple ci-dessus le répertoire FileStream est passé de 30 Go à 2.5 Go.
Je n'ai pas constaté de problèmes pour l'instant mais je dégage toute responsabilité en cas de problème ! Certains PDF ne sont pas du tout compressés, je ne sais pas pourquoi.