Pregunta

Es posible llamar 7-zip de una secuencia de comandos SQL? Básicamente, estoy Extracción de tablas a CSV y luego empaquetarlos en archivos 7Z. He instalado 7-zip en la máquina donde está instalado SQL Server y ha añadido a la ruta, pero esto no es suficiente lo que parece.

Me sale el siguiente error al intentar ejecutar el script con xp_cmdshell

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

este es el código, ya he declarado las variables

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

set @archiveCommand = '7z a '+@filename+'.7z '+@filename+' '
print @archiveCommand
EXEC master..xp_cmdshell @archiveCommand
¿Fue útil?

Solución

Es posible, sí, pero probablemente una mala idea: permisos son a menudo un problema (como se ha averiguado), caminos y comandos shell directorios de trabajo va a tropezar, y constructivas en SQL es un dolor a su alrededor. Sería mucho más fácil sólo para usar un script externo, y ejecutarlo desde un trabajo programado o paquete SSIS.

Si usted aclarar exaclty por qué y cuándo desea ejecutar la secuencia de comandos SQL desde entonces alguien puede ser capaz de sugerir un mejor enfoque. Hago exactamente lo mismo con SSIS y Python, por ejemplo.

Otros consejos

No sé si esto será útil ahora, pero me encontré con este problema y lo resolvió llamando a la aplicación 7z con el nombre del archivo.

Así que en lugar de:

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

querría:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top