Ful*_*oof 4 sql-server ssis sql-server-2012 sql-server-agent maintenance-plans
我有一个每周和每晚的 SQL Server 代理作业,分别执行每周和每晚的维护计划。
这些每周(周日)和每晚(一周的其他 6 个晚上)维护计划仅在第一个任务中与总共连续六个步骤不同。也就是说,在夜间/每日维护计划中,第一步是“重新组织所有用户数据库上的索引”,而在每周/周日维护计划中,第一步是“重建所有用户数据库上的索引”。
是否有可能以及如何仅运行一个(而不是两个)维护计划,一周的所有 7 个晚上,条件是在 6 天内第一步是一个(重组索引),而在一周的其余 1 天,第一步是另一个(重建索引)?

Windows Server 2008 R2 上的 SQL Server 2012 R2
小智 5
我不确定您想在这方面做得多脏,但唯一的方法是打开 SQL Server Data Tools 并构建(或修改)SSIS 包。一种方法是将维护计划导入 SQL Server 2012 Data Tools 并修改 SSIS 包。另一种方法是从头开始创建它。创建 SSIS 包时,您拥有与维护计划相同的选项。
您要添加的一件事是Expression Task,它是 SQL Server 2012 的一个很棒的补充。您可以使用DATEPART SSIS表达式根据包开始时间的系统变量来确定它是工作日还是周末。现在我不是最擅长表达的,但这将是我会使用的:
DATEPART("dw",@[System::StartTime])
Run Code Online (Sandbox Code Playgroud)
这将返回一个介于 1 和 7 之间的数字,其中 1 = 星期日和 7 = 星期六。因此,从该任务开始,您的维护计划的每个路径都会有两个优先约束。如果值为 1(一),则它会转到重建索引任务,如果是其他值,则它会转到重组任务。
尽管如果我要深入研究这么多细节,我将停止将索引任务与维护计划一起使用。我建议使用实际上可以帮助您更有效地维护索引碎片的 T-SQL 代码。我会说虽然我不知道 SQL Server 是否在 2012 年通过索引任务有所改进。最广为人知的索引碎片管理解决方案可以在这里找到,Ola Hallengren。
| 归档时间: |
|
| 查看次数: |
3628 次 |
| 最近记录: |