题
是否可以从SQL脚本调用7-zip?基本上,我将表提取到CSV,然后将它们包装到7Z文件中。我已经在安装了SQL Server并将其添加到路径上的计算机上安装了7个拉链,但这似乎还不够。
当我尝试使用XP_CMDShell运行脚本时,我会收到以下错误
'7z' is not recognized as an internal or external command,
operable program or batch file.
这是代码,我已经声明了变量
declare @archiveCommand nvarchar(max)
declare @filename nvarchar(max)
set @archiveCommand = '7z a '+@filename+'.7z '+@filename+' '
print @archiveCommand
EXEC master..xp_cmdshell @archiveCommand
解决方案
是的,是的,但可能是一个坏主意:权限通常是一个问题(您发现),路径和工作目录会绊倒您,而在SQL中构建Shell Commands是一件痛苦。仅使用外部脚本并从计划的作业或SSIS软件包运行它会容易得多。
如果您澄清为什么以及何时想从SQL运行脚本,那么有人可能会建议一种更好的方法。例如,我使用SSIS和Python做同样的事情。
其他提示
我不知道这是否现在会有所帮助,但是我遇到了这个问题并通过使用文件名调用7Z应用程序解决了它。
因此,而不是:
set @archiveCommand = '7z a '+@filename+'.7z '+@filename+' '
您想要:
set @archiveCommand = '"C:\Program Files\7-zip\7z" a '+@filename+'.7z '+@filename+' '
不隶属于 StackOverflow