gpp加密在xp_cmdshell

问题描述:

我想加密一个.csv文件使用gpg在xp_cmdshell命令在sql server 2012。 当我通过xp_cmdshell使用gpg时,它表示gpg不被识别为内部或外部命令。 但是,这完美的Windows cmd。 我应该如何配置我的sql服务器来接受这个命令。请指教。gpp加密在xp_cmdshell

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

exec master..xp_cmdshell @encrypt 

要解决上述错误,只需在代码中添加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 = '[email protected]' 


SET @SQL = 'EXEC master.dbo.xp_cmdshell ''C:\Progra~1\GNU\GnuPG\gpg2 -o ' [email protected]+ ' -e -r ' [email protected] + ' ' [email protected]+ '''' 

PRINT @SQL 
-- EXEC sp_execute @SQL 
+0

我收到一条新的错误消息,说C:\不被识别为内部或外部命令。 –

+0

你可以打印@SQL并显示它? – JiggsJedi

+0

好吧,我修改了sql,在路径中加了“”,现在它是select encrypt ='“c:\ Program Files(x86)\ GNU \ GnuPG \ gpg2.exe”-e -r'+ sEncryptionKey +''+ sPath + tempdataFolder +'\'+ sFileName,现在我得到加密失败,没有公钥 –