esecuzione 7-Zip da uno script SQL
-
02-10-2019 - |
Domanda
è possibile chiamare 7-zip da uno script SQL? fondamentalmente sto Estrazione tabelle in csv e poi il confezionamento in archivi 7Z. Ho installato 7-zip sulla macchina su cui è installato e ha aggiunto al percorso di SQL Server, ma questo non basta a quanto pare.
ottengo il seguente errore quando si tenta di eseguire lo script con xp_cmdshell
'7z' is not recognized as an internal or external command,
operable program or batch file.
Questo è il codice, ho già dichiarato le variabili
declare @archiveCommand nvarchar(max)
declare @filename nvarchar(max)
set @archiveCommand = '7z a '+@filename+'.7z '+@filename+' '
print @archiveCommand
EXEC master..xp_cmdshell @archiveCommand
Soluzione
E 'possibile, sì, ma probabilmente una cattiva idea: permessi sono spesso un problema (come hai scoperto), i percorsi e le directory di lavoro scatterà in su, e la costruzione di comandi di shell in SQL è un dolore a tutto tondo. Sarebbe molto più facile solo per usare uno script esterno, ed eseguirlo da un lavoro pianificato o pacchetto SSIS.
Se chiarire exaclty perché e quando si desidera eseguire lo script SQL da allora qualcuno può essere in grado di suggerire un approccio migliore. Faccio esattamente la stessa cosa usando SSIS e Python, per esempio.
Altri suggerimenti
Non so se questo sarà utile ora, ma mi sono imbattuto in questo problema e risolto chiamando l'applicazione 7z con il nome del file.
Così, invece di:
set @archiveCommand = '7z a '+@filename+'.7z '+@filename+' '
Si vorrebbe:
set @archiveCommand = '"C:\Program Files\7-zip\7z" a '+@filename+'.7z '+@filename+' '