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
我收到一条新的错误消息,说C:\不被识别为内部或外部命令。 –
你可以打印@SQL并显示它? – JiggsJedi
好吧,我修改了sql,在路径中加了“”,现在它是select encrypt ='“c:\ Program Files(x86)\ GNU \ GnuPG \ gpg2.exe”-e -r'+ sEncryptionKey +''+ sPath + tempdataFolder +'\'+ sFileName,现在我得到加密失败,没有公钥 –