我正在尝试使用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
答案 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