-1

外部ベンダーに送信する xml ファイルを暗号化するために、SQL から直接 gpg2 を使用しようとしています。エラーなしで xml ファイルと ftp を作成できますが、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\Outgoing\SomeFile.xml: 暗号化に失敗しました: 公開鍵がありません

gpg4win(2.2.5) プログラムは SQL 2008R2 ボックスに直接インストールされ、キーを生成し、FTPUser アカウントを使用して署名するプロセスを経ました。SQL で xp_cmdshell コマンドを実行しているときに、メッセージを一時テーブルにダンプすることができました。結果は上記の 2 つのメッセージです。

SQL から呼び出すときに使用する必要がある別の gpg2 コマンドはありますか? インターウェブを検索してみましたが、無駄であることがわかりました。

4

1 に答える 1

0

私は問題を理解しました。SQL Server サービスを実行する別の Windows アカウントがあります。そのアカウントがコマンドを開始したアカウントだったので、そのアカウントで db サーバーにキーを設定する必要がありました。最初に設定したときは、管理者アカウントで行いました。これは、xp_cmdshell がコマンドを開始するために使用していたアカウントとは異なるため、このアカウントで公開鍵を見つけることができませんでした。キーを適切なアカウントに追加した後、すべてが正常に機能しました。

于 2015-08-31T14:10:13.217 に答える