SET @OutputFileDirectory = NULL -- Specify the output file directory. If no directory is specified, then the SQL Server error log directory is used.
例如
SET @OutputFileDirectory = 'C:\temp'
验证更改的文件夹:
如果作业已经存在,则您必须重新创建它们,如下所述。
如果 MaintenanceSolution 作业已经存在
如果您需要更改所有现有作业的日志位置,则必须更新每个步骤,或者删除作业并使用 Ola 的脚本重新创建它们。
(请记住,调度、作业状态……在删除和创建它们时将从作业中删除)。
删除作业的示例查询:
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = N'DatabaseBackup - SYSTEM_DATABASES - FULL')
EXEC msdb.dbo.sp_delete_job @job_name=N'DatabaseBackup - SYSTEM_DATABASES - FULL'
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'DatabaseBackup - USER_DATABASES - DIFF')
EXEC msdb.dbo.sp_delete_job @job_name=N'DatabaseBackup - USER_DATABASES - DIFF'
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'DatabaseBackup - USER_DATABASES - FULL')
EXEC msdb.dbo.sp_delete_job @job_name=N'DatabaseBackup - USER_DATABASES - FULL'
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'DatabaseBackup - USER_DATABASES - LOG')
EXEC msdb.dbo.sp_delete_job @job_name=N'DatabaseBackup - USER_DATABASES - LOG'
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'DatabaseIntegrityCheck - SYSTEM_DATABASES')
EXEC msdb.dbo.sp_delete_job @job_name=N'DatabaseIntegrityCheck - SYSTEM_DATABASES'
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'DatabaseIntegrityCheck - USER_DATABASES')
EXEC msdb.dbo.sp_delete_job @job_name=N'DatabaseIntegrityCheck - USER_DATABASES'
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IndexOptimize - USER_DATABASES')
EXEC msdb.dbo.sp_delete_job @job_name=N'IndexOptimize - USER_DATABASES'
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = N'sp_purge_jobhistory')
EXEC msdb.dbo.sp_delete_job @job_name=N'sp_purge_jobhistory'
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = N'sp_delete_backuphistory')
EXEC msdb.dbo.sp_delete_job @job_name=N'sp_delete_backuphistory'
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = N'CommandLog Cleanup')
EXEC msdb.dbo.sp_delete_job @job_name=N'CommandLog Cleanup'
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = N'Output File Cleanup')
EXEC msdb.dbo.sp_delete_job @job_name=N'Output File Cleanup'
在保持 Ola 的日志命名约定的同时按作业步骤更改它
您可以更改作业步骤属性中的位置,通过双击或按 Edit打开。
选择高级
然后转到输出文件
你会注意到一个像这样的字符串:
您可以在哪里将其更改
$(ESCAPE_SQUOTE(SQLLOGDIR))
为您的首选位置如果说,您想获取日志C:\temp
,请将其更改为:该字符串可能因作业步骤的用途和您的 SQL Server 版本而异。
(SQL Server 2012及以上应该得到相同的结果)
因此,Ola 的命名约定保持不变,日志文件将不会被重复使用。
你必须记住适应
OutputFileCleanup
工作从:
至:
或者简而言之,将
$(ESCAPE_SQUOTE(SQLLOGDIR))
零件更改为您指定的文件夹。为 MaintenanceSolution 创建的所有作业更改它
您可以通过将文件夹名称添加到脚本
@OutputFileDirectory
中的参数来为整个维护解决方案执行此操作。MaintenanceSolution.SQL
例如
验证更改的文件夹:
如果作业已经存在,则您必须重新创建它们,如下所述。
如果 MaintenanceSolution 作业已经存在
如果您需要更改所有现有作业的日志位置,则必须更新每个步骤,或者删除作业并使用 Ola 的脚本重新创建它们。
(请记住,调度、作业状态……在删除和创建它们时将从作业中删除)。
删除作业的示例查询:
验证并重新运行维护解决方案
SET @CreateJobs = 'Y'
是的,你可以这样做。这是我过去的做法:
可能有一种更好的方法可以同时更改它们,但我以前没有这样做过。