質問

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+' '

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top