Dav*_*veD 5 backup sql-server-2012 maintenance-plans
我有一个 SQL Server 2012 维护计划,它执行正常的操作(重建索引和更新统计信息、备份数据库、删除超过 X 天的 .bak 文件等)。除了一项维护清理任务外,一切正常:

这应该是删除所有意外留在每晚备份目录中的 .7z 档案(相当于 .zip 或 .rar)(尽管我们尽了最大努力,但最终还是有些人将这些文件留在服务器上......),但是E:\Backups\foo\bar.7z在维护计划运行后,子目录(例如)中仍然存在旧的 .7z 文件。
SQL Server 日志中没有错误。
我怀疑这是因为“删除以下类型的文件:备份文件”选项限制了可以删除的文件类型。我还尝试使用 7z 扩展名将其更改为“维护计划文本报告”,但没有任何更改。
是否可以让维护计划在维护清理任务期间删除任意(非 SQL Server)文件?如果是这样,知道我做错了什么吗?
根据此处的MS
维护清理任务会删除与维护计划相关的文件,包括数据库备份文件和维护计划创建的报告。
通过使用维护清理任务,包可以删除指定服务器上的备份文件或维护计划报告。维护清理任务包括用于删除特定文件或删除文件夹中的一组文件的选项。您可以选择指定要删除的文件的扩展名。
我没有通过维护计划删除任何其他扩展文件,并且从上面看来,非 sql 文件可能无法通过 Maint'ce 计划删除:
我们使用的是 VB 脚本并通过 SQL 代理作业调度它:
选择类型为:- 在 SQL 代理作业中为以下代码创建步骤时键入 ActiveX scipt:
On Error Resume Next
Dim fso, folder, files, sFolder, sFolderTarget
Set fso = CreateObject("Scripting.FileSystemObject")
'location of the files
sFolder = "B:\FolderA\ABC\"
Set folder = fso.GetFolder(sFolder)
Set files = folder.Files
'used for writing to textfile - generate report on files deleted
Const ForAppending = 8
'you need to create a folder named "scripts" for ease of file management &
'a file inside it named "LOG.txt" for delete activity logging
Set objFile = fso.OpenTextFile(sFolder & "\Report\LOG.txt", ForAppending)
objFile.Write "================================================================" & VBCRLF & VBCRLF
objFile.Write " FILE REPORT " & VBCRLF
objFile.Write " DATE: " & FormatDateTime(Now(),1) & "" & VBCRLF
objFile.Write " TIME: " & FormatDateTime(Now(),3) & "" & VBCRLF & VBCRLF
objFile.Write "================================================================" & VBCRLF
'iterate thru each of the files in the respective folder
For Each itemFiles In files
'retrieve complete path of file for the DeleteFile method and to extract
'file extension using the GetExtensionName method
a=sFolder & itemFiles.Name
'retrieve file extension
b = fso.GetExtensionName(a)
'check if the file extension is abc(whatever is the extension of you're file
If uCase(b)="abc" Then
'check if the files are older than 1days
If DateDiff("d",itemFiles.DateCreated,Now()) >= 1 Then
'Delete any old files to cleanup folder
fso.DeleteFile a
objFile.WriteLine "FILE DELETED: " & a
End If
End If
Next
objFile.WriteLine "================================================================" & VBCRLF & VBCRLF
objFile.Close
Set objFile = Nothing
Set fso = Nothing
Set folder = Nothing
Set files = Nothing
Run Code Online (Sandbox Code Playgroud)
注意* 上述脚本的工作原理是,您需要在基本文件夹位置中创建文件夹Report ,并在该位置创建文件LOG.txt,该文件捕获或记录进程删除的文件的详细信息。您可以使用我们用来跟踪的附加功能,或者根据需要修改脚本!
| 归档时间: |
|
| 查看次数: |
3528 次 |
| 最近记录: |