几周前我问了这个问题错误记录了各种问题并得到了我需要的答案。根据答案和一些阅读材料,我想创建以下工作:
- 一旦错误日志达到 Mb 大小或扩展到 2 周,就循环错误日志
- 一旦我们达到存档错误日志文件的限制(现在我们有默认值,6),将最旧的错误日志移动到不同的位置
在回答我之前的问题时,我得到了我在最后发布的 powershell 片段,以获取错误日志的大小。但这是我第一次尝试使用 powershell 做一些事情,所以我什至不知道从哪里开始。对设置这些工作有帮助吗?也许不需要 powershell,可以使用 CmdExec 或 tsql 来完成?不是我知道 CmdExec,只是询问其他方法。最好的一个是 tsql,因为我对它有更多的经验。
$SqlServer = New-Object Microsoft.SqlServer.Management.Smo.Server("YOUR_SQL_SERVER_NAME")
$SqlServer.EnumErrorLogs() |
Select-Object Name, @{Name = "SizeMB"; Expression = {[System.Math]::Round($_.Size/1024/1024,2)}}
如果是我,我会创建一个 SQL 代理作业,用于根据大小或日期循环错误日志。每天运行几次,您甚至可以设置警报以通知错误日志是否循环。
您还可以更改 IF 语句或添加 OR 语句来查看日期和周期(如果它超过 2 周或您想要的时间)。
编辑:基于日期的周期存档需要是以前的错误日志。日志 0 将始终返回当前日期,因为它处于活动状态,呃!
至于移动它们,您最多可以保留 99 个日志文件。您认为您的扩展信息需求会超过 100 条日志吗?如果没有,我会将错误日志位置移动到可以容纳 100 个完整日志的磁盘并更改最大日志数。