Marcin S.

Marcin S. Professional SQL
Server Administrator

Temat: Kompresja plików z poziomu joba powershell w SQL Server 2012

Cześć,

mam problem z kompresją plików z poziomu joba typu powershell w SQL Server 2012. Poniższy kod działa prawidłowo z poziomu SQL Server 2014 - nowsza wersja SQLPS:

$today = Get-Date -format ddMMyyyyHHmm
$exportPath = 'X:\MSSQLSERVER\'+'SQL_AUDIT_LOGS_Serwer\'
$fileName = $exportPath.TrimEnd('\')+'_'+$today.toString()+'.zip'
Add-Type -Assembly System.IO.Compression.FileSystem
$compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
[System.IO.Compression.ZipFile]::CreateFromDirectory($exportPath,$fileName, $compressionLevel, $false)
Remove-Item $exportPath -recurse


Zwaracany jest błąd, że nie można załadować typu System.IO.Compression.FileSystem. Próbowałem również za pomocą: Add-Type -Path 'ścieżka do DLL', ale pojawia się wtedy błąd, że wersja dll jest nowsza niż środowisko dla którego jest uruchamiana. Zna ktoś jakiś sposób na załadowanie tego Assembly do SQLPS?Ten post został edytowany przez Autora dnia 30.07.15 o godzinie 13:33
Marcin S.

Marcin S. Professional SQL
Server Administrator

Temat: Kompresja plików z poziomu joba powershell w SQL Server 2012

Udalo mi się samemu napisać kompresję dla SQLPS 2012 :). Może się komuś przyda.


$today = Get-Date -format ddMMyyyyHHmm
$exportPath = 'X:\MSSQLSERVER\'+'SQL_AUDIT_LOGS_SERVER\'
$zipFileName = $exportPath.TrimEnd('\')+'_'+$today.toString()+'.zip'
set-content $zipFileName ("PK" + [char]5 + [char]6 + [char]0 +[char]0 +[char]0 +[char]0 +[char]0 +[char]0 +[char]0 +[char]0 +[char]0 +[char]0 +[char]0 +[char]0 +[char]0 +[char]0 +[char]0 +[char]0 +[char]0 +[char]0)
$shellApplication = new-object -com shell.application
$zipFile = $shellApplication.NameSpace($zipfilename)
Get-ChildItem $exportPath | where{-not ($_.PSIsContainer -and -not (gci $_))} | foreach {$zipFile.CopyHere($_.fullname); while($zipFile.Items().Item($_.Name) -eq $null) {start-sleep -seconds 1}}
Remove-Item $exportPath -recurse



Wyślij zaproszenie do