質問
SQLスクリプトから7-zipを呼び出すことは可能ですか?基本的に、テーブルをCSVに抽出し、7Zファイルにパッケージ化しています。 SQLサーバーがインストールされているマシンに7-ZIPをインストールし、パスに追加しましたが、これで十分ではないようです。
xp_cmdshellでスクリプトを実行しようとすると、次のエラーが発生します
'7z' is not recognized as an internal or external command,
operable program or batch file.
これはコードです、私はすでに変数を宣言しました
declare @archiveCommand nvarchar(max)
declare @filename nvarchar(max)
set @archiveCommand = '7z a '+@filename+'.7z '+@filename+' '
print @archiveCommand
EXEC master..xp_cmdshell @archiveCommand
解決
はい、それは可能ですが、おそらく悪い考えです。許可はしばしば問題であり(あなたが見つけたように)、パスとワーキングディレクトリがあなたをつまずかせ、SQLでシェルコマンドを構築することはすべての丸い痛みです。外部スクリプトを使用して、スケジュールされたジョブまたはSSISパッケージから実行するだけではるかに簡単です。
SQLからスクリプトを実行したい理由を明確にした場合、誰かがより良いアプローチを提案できるかもしれません。たとえば、SSISとPythonを使用してまったく同じことをします。
他のヒント
これが今役に立つかどうかはわかりませんが、この問題に出くわし、ファイル名で7Zアプリを呼び出すことで解決しました。
だから:の代わりに:
set @archiveCommand = '7z a '+@filename+'.7z '+@filename+' '
あなたが望むでしょう:
set @archiveCommand = '"C:\Program Files\7-zip\7z" a '+@filename+'.7z '+@filename+' '
所属していません StackOverflow