我们的生产 SQL Server 2005 数据库的数据文件位于一个单独的物理驱动器上,Microsoft Windows 2003 的磁盘碎片整理程序工具报告为 99% 是碎片化的。
我们安排了一个任务,在星期六早上 3:00 对这个驱动器进行碎片整理。作业在 40 分钟后完成,没有明显错误。但是,驱动器仍然严重碎片化。
我们应该在整理碎片之前停止 SQL Server 服务吗?
语境
每个上下文请求:我们有一个 Microsoft SQL Server 2005 实例 (9.00.5324.00) 在 Dell PowerEdge 2950 硬件上运行 32 位 Windows Server 2003 (SP2),大约 2007 年,具有 4GB RAM。PowerEdge 2950 有四个 68GB 驱动器配置为 RAID-1 以创建两个 68GB 虚拟磁盘:(1) C(引导和操作系统)&D(页面文件,其他杂项数据);(2) E(SQL 数据)。据我所知,IT 人员从未对这些驱动器进行过碎片整理……磁盘碎片整理程序报告的文件碎片率为 66% (C)、77% (D) 和99% (E)。性能监视器报告以下平均结果:“分页文件:使用率百分比”= ~6.8%;“SQL Server:缓冲区管理器 - 页面预期寿命”= 20 秒;和“PhysicalDisk:平均磁盘秒/写入,驱动器 E”= 之间 300 和 1,. 我们将在几个月内进行急需的硬件和 SQL Server 升级(即,新硬件、64 位 Windows …
报告当前计算“总计”列,如下所示:
,CASE WHEN ISNULL(CLM_BREAKFAST_TYPEA.MealsA, 0) +
ISNULL(CLM_BREAKFAST_TYPEB.MealsB, 0) = 0
THEN ''
ELSE CONVERT(VARCHAR(15),
ISNULL(CLM_BREAKFAST_TYPEA.MealsA, 0) +
ISNULL(CLM_BREAKFAST_TYPEB.MealsB, 0))
END AS 'MealsTotal'
Run Code Online (Sandbox Code Playgroud)
当总数等于零而不是 NULL 或“0”时,如何获得空白单元格,并避免进行两次计算?