Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>This is the script I ended up using to test speeding up the process. It leaves the jobs in the msdb database when it finishes so I have to go back and delete all the jobs that have been added after they finish running, so it is a bit messy and if I hadn't already setup permissions for the server agent service and the folder I am accessing I think it would have giving me errors there. I will probably rewrite this and just create separate backup and compress jobs for each database so I am not dropping and creating server agent jobs all the time but this worked for testing. </p> <pre><code>-- YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY -- II zip all files in a folder II -- VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV -- Zip and then Delete all files from the backup folder -- List all files in a directory - T-SQL parse string for date and filename DECLARE @PathName VARCHAR(256) , @CMD VARCHAR(512) CREATE TABLE #CommandShell ( Line VARCHAR(512)) SET @PathName = 'D:\FILES\Backups\' SET @CMD = 'DIR ' + @PathName + ' /TC' INSERT INTO #CommandShell EXEC MASTER..xp_cmdshell @CMD -- Delete lines not containing filename DELETE FROM #CommandShell WHERE Line NOT LIKE '[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9] %' OR Line LIKE '%&lt;DIR&gt;%' OR Line is null -- SQL reverse string function - charindex string function SELECT ROW_NUMBER() OVER (ORDER BY REVERSE( LEFT(REVERSE(Line),CHARINDEX(' ',REVERSE(line))-1 ) )) AS ROW_NUM, FileName = REVERSE( LEFT(REVERSE(Line),CHARINDEX(' ',REVERSE(line))-1 ) ), CreateDate = LEFT(Line,10) INTO #tempFileList FROM #CommandShell WHERE REVERSE( LEFT(REVERSE(Line),CHARINDEX(' ',REVERSE(line))-1 ) ) LIKE '%.bak' ORDER BY FileName DROP TABLE #CommandShell DECLARE @FileMaxRownum INT SET @FileMaxRownum = (SELECT MAX(ROW_NUM) FROM #tempFileList) DECLARE @FileIter INT SET @FileIter = (SELECT MIN(ROW_NUM) FROM #tempFileList) WHILE @FileIter &lt;= @FileMaxRownum BEGIN DECLARE @DelFile varchar(200) --@@ DECLARE @cmd2 VARCHAR(1000) SET @cmd2 = null DECLARE @db_bkp_files_dir varchar(100) SET @db_bkp_files_dir = null DECLARE @archive_destination_dir varchar(100) SET @archive_destination_dir = null DECLARE @archive_name varchar(100) SET @archive_name = null DECLARE @7z_path varchar(100) SET @7z_path = null set @archive_destination_dir = @PathName --destination dir set @7z_path = 'D:\FILES' set @db_bkp_files_dir = right(@PathName,1) --db backup files origin SELECT TOP(1) @archive_name = FileName FROM #tempFileList WHERE ROW_NUM = @FileIter -- 7za switches: -- -mx0 (Don't compress) -- -mx1 (Low) -- -mx3 (Fast) -- -mx5 (Normal) -- -mx7 (Maximum) -- -mx9 (Ultra) -- -- -mmt (enable multithreading) -- -- -t7z -- -tbzip2 SET @cmd2 = @7z_path + '\7za a -t7z -mx5 -ms=off ' + @archive_destination_dir + @archive_name + '.7z ' + @archive_destination_dir + @archive_name --SET @cmd2 = @7z_path + '\7za a -tbzip2 -mx5 ' + @archive_destination_dir + @archive_name + '.7z ' + @archive_destination_dir + @archive_name DECLARE @cmd3 nvarchar(max) SET @cmd3 = 'USE msdb; EXEC sp_add_job @job_name = N''' + @archive_name + ' Zip job' + '''' DECLARE @cmd4 nvarchar(max) SET @cmd4 = 'USE msdb; EXEC sp_add_jobstep @job_name = N''' + @archive_name + ' Zip job' +''', @step_name = N''' + @archive_name + ' Zip job Step 1' + ''', ' + '@subsystem = N''TSQL'', @command = N''' + 'DECLARE @cmd VARCHAR(1000) SET @cmd = ''''' + @7z_path + '\7za a -t7z -mx5 -ms=off ' + @archive_destination_dir + @archive_name + '.7z ' + @archive_destination_dir + @archive_name + ''''' EXEC xp_cmdshell @cmd ' + ''', @retry_attempts = 5, @retry_interval = 1' DECLARE @cmd5 nvarchar(max) SET @cmd5 = 'USE msdb; EXEC dbo.sp_add_jobserver @job_name = N''' + @archive_name + ' Zip job' + ''', @server_name = N''ServerName'';' DECLARE @cmd6 nvarchar(max) SET @cmd6 = 'USE msdb; EXEC dbo.sp_start_job N''' + @archive_name + ' Zip job' + ''';' DECLARE @cmd7 nvarchar(max) SET @cmd7 = 'EXEC sp_delete_job @job_name = N''' + @archive_name + ' Zip job' + ''';' PRINT @cmd3 EXEC sp_executesql @statement = @cmd3 PRINT @cmd4 EXEC sp_executesql @statement = @cmd4 PRINT @cmd5 EXEC sp_executesql @statement = @cmd5 PRINT @cmd6 EXEC sp_executesql @statement = @cmd6 PRINT @cmd7 --print @cmd2 --EXEC xp_cmdshell @cmd2 --@@ SELECT TOP(1) @DelFile = 'del ' + @PathName + FileName FROM #tempFileList WHERE ROW_NUM = @FileIter --EXEC xp_cmdshell @DelFile SET @FileIter = @FileIter + 1 END DROP TABLE #tempFileList </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload