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
È stato utile?

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+' '

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top