Вопрос

Можно ли позвонить в 7-Zip из сценария SQL? По сути, я извлекаю таблицы в CSV, а затем упаковываю их в файлы 7Z. Я установил 7-Zip на машине, где установлен SQL Server и добавил его в путь, но этого недостаточно.

Я получаю следующую ошибку, когда пытаюсь запустить скрипт с помощью 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