我想直接從sql使用gpg2來加密我將發送給外部供應商的xml文件。我可以在沒有錯誤的情況下創建xml文件和ftp,但在嘗試使用gpg2命令加密文件時遇到了問題。使用來自xp_cmdshell的gpg2
我有一個存儲過程,回聲的命令到一個.txt文件,然後我用xp_cmdshell執行該文件。我是這樣設計的,這樣我就可以動態地創建命令,具體取決於你想要加密的文件名。
這是我寫入文本文件的命令,以便我可以執行它。從SQL框的命令行調用時,該命令可以正常工作,但在xp_cmdshell中不起作用。
"C:\Program Files (x86)\GNU\GnuPG\gpg2" --recipient FTPUser --output C:\FTP\Outgoing\test.gpg --batch --encrypt C:\FTP\Outgoing\SomeFile.xml
這裏是信息:
GPG:名爲ftpuser:跳過:不公鑰GPG:
C:\ FTP \傳出\ SomeFile.xml:加密失敗:公鑰
gpg4win(2.2.5)程序直接安裝在我的SQL 2008R2框中,並且我已經完成了生成過程然後使用FTPUser帳戶對其進行簽名。我可以在SQL中執行xp_cmdshell命令時將消息轉儲到臨時表中。結果是上面的兩條消息。
從SQL調用時是否還需要使用另一個gpg2命令?我試圖搜索互聯網,但它已被證明是徒勞的。
只是猜測,也許當用'xp_cmdshell'執行它不能達到所需的環境變量。在執行腳本之前,請檢查一下手冊中的GPG2需要什麼樣的環境變量(如PATH等)並提供它們'SET name = ...'。 – lad2025
運行'SET |更多'從命令行和cmdshell進行比較 – lad2025