是否可以从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+' '

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top