Question

est-il possible d'appeler 7-zip à partir d'un script SQL? En fait, je suis extrais tables à csv, puis de les emballer dans des fichiers 7z. J'ai installé 7-zip sur la machine où est installé SQL Server et ajouté au chemin, mais cela ne suffit pas, il semble.

je reçois l'erreur suivante lorsque je tente d'exécuter le script avec xp_cmdshell

'7z' is not recognized as an internal or external command,
operable program or batch file.

est le code, je l'ai déjà déclaré les variables

declare @archiveCommand nvarchar(max)
declare @filename nvarchar(max)

set @archiveCommand = '7z a '+@filename+'.7z '+@filename+' '
print @archiveCommand
EXEC master..xp_cmdshell @archiveCommand
Était-ce utile?

La solution

Il est possible, oui, mais probablement une mauvaise idée: les autorisations sont souvent un problème (comme vous avez découvert), des chemins et des répertoires de travail vous désarçonner, et la construction de commandes shell dans SQL est une douleur toute. Il serait beaucoup plus facile à utiliser juste un script externe et l'exécuter à partir d'un travail planifié ou package SSIS.

Si vous clarifiez exaclty pourquoi et quand vous voulez exécuter le script à partir de SQL alors quelqu'un peut être en mesure de proposer une meilleure approche. Je fais exactement la même chose en utilisant SSIS et Python, par exemple.

Autres conseils

Je ne sais pas si cela sera utile, mais je suis tombé sur cette question et a résolu en appelant l'application 7z avec le nom du fichier.

Ainsi, au lieu de:

set @archiveCommand = '7z a '+@filename+'.7z '+@filename+' '

Vous ne voudrait:

set @archiveCommand = '"C:\Program Files\7-zip\7z" a '+@filename+'.7z '+@filename+' '

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top