Frage

ist es möglich, rufen Sie 7-Zip von einem SQL-Skript? im Grunde bin ich Extrahieren Tabellen csv und dann in 7z-Dateien verpacken. Ich habe 7-zip auf der Maschine installiert, auf die SQL Server installiert ist und es zu dem Pfad hinzugefügt, aber das ist nicht genug, um es zu sein scheint.

ich folgende Fehlermeldung erhalten, wenn ich versuche, um das Skript auszuführen mit xp_cmdshell

'7z' is not recognized as an internal or external command,
operable program or batch file.

Dies ist der Code, habe ich bereits die Variablen deklariert

declare @archiveCommand nvarchar(max)
declare @filename nvarchar(max)

set @archiveCommand = '7z a '+@filename+'.7z '+@filename+' '
print @archiveCommand
EXEC master..xp_cmdshell @archiveCommand
War es hilfreich?

Lösung

Es ist möglich, ja, aber wahrscheinlich eine schlechte Idee: Berechtigungen sind oft ein Problem (wie Sie herausgefunden haben), Pfade und Arbeitsverzeichnisse werden Sie stolpern und den Aufbau von Shell-Befehle in SQL ist ein Schmerz für alle. Es wäre viel einfacher, nur ein externes Skript zu verwenden, und es von einem geplanten Auftrag oder SSIS-Paket ausführen.

Wenn Sie klären exaclty warum und wann Sie das Skript von SQL ausgeführt werden soll, dann kann jemand der Lage sein, einen besseren Ansatz vorzuschlagen. Ich mache genau das Gleiche mit SSIS und Python, zum Beispiel.

Andere Tipps

Ich weiß nicht, ob dies nun hilfreich sein wird, aber ich kam in dieser Frage und löste es durch die 7z-App mit dem Dateinamen aufrufen.

Also statt:

set @archiveCommand = '7z a '+@filename+'.7z '+@filename+' '

Sie wollen:

set @archiveCommand = '"C:\Program Files\7-zip\7z" a '+@filename+'.7z '+@filename+' '

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top