xp_cmdshell中的gpg加密

时间:2016-06-13 19:28:22

标签: sql-server-2012 sqlcmd

我正在尝试使用xp_cmdshell中的sql server 2012命令中的gpg加密.csv文件。 当我通过xp_cmdshell使用gpg时,它表示gpg不被识别为内部或外部命令。 但这在windows cmd上完美运行。 我应该如何配置我的SQL服务器以接受此命令。请指教。

select @encrypt = 'gpg -e -r ' + @sEncryptionKey+ ' '+ @sPath + @tempdataFolder+'\'+ @sFileName 

exec master..xp_cmdshell @encrypt

1 个答案:

答案 0 :(得分:0)

要解决上面指出的错误,只需在代码中添加gpg.exe的完整路径。

select @encrypt = 'c:\gpg\gpg.exe -e -r ' + @sEncryptionKey+ ' '+ @sPath + @tempdataFolder+'\'+ @sFileName 

exec master..xp_cmdshell @encrypt

为了比较,这就是我过去通过SSIS做到这一点的方式;请确保提供可执行文件的完整路径...在此示例中我们使用gpg4win(gpg2.exe)。

您可能还想将每个参数包装在" "更好地处理带空格的文件名/路径。

DECLARE @sKeyEmail VARCHAR(100), @sInFile VARCHAR(100), @sOutFile VARCHAR(100), @SQL VARCHAR(1000)

SET @sInFile = 'c:\temp\somefile.xls'
SET @sOutFile = 'c:\temp\somefile.xls.gpg'
SET @sKeyEmail = 'user@domain.com'


SET @SQL = 'EXEC master.dbo.xp_cmdshell ''C:\Progra~1\GNU\GnuPG\gpg2 -o ' +@sOutFile+ ' -e -r ' +@sKeyEmail + ' ' +@sInFile+ ''''

PRINT @SQL
-- EXEC sp_execute @SQL