重组&在SQL Server 2008上重建索引

时间:2012-04-16 14:07:44

标签: sql-server sql-server-2008

我尝试使用带有SQL Server 2008的SQL Server Management Studio创建数据库维护计划 如果我使用数据库维护计划向导并将其设置为all to rebuild index,那么运行该包,它在表上失败。

然后我只是在对象资源管理器中找到该表,并在此表的弹出菜单中使用Rebuild All索引,这很好。

太困惑了。这是否意味着这两种方式需要不同的设置?如何解决这个问题?

另一个问题是: 如果应用Rebuild索引,则不需要使用Reorganize,对吗?

以下是作业历史记录中的错误消息: 信息 以用户身份执行:xxx \ sqlservice。 Microsoft(R)SQL Server执行包实用程序版本10.0.5500.0(适用于64位版权所有(C)Microsoft Corporation 1984-2005。版权所有。开始时间:7:21:27 PM进展:2012-04-14 19:21:27.96来源:{9FA4339C-7D29-4059-871B-5160B63DBBA0}执行查询“DECLARE @Guid UNIQUEIDENTIFIER EXECUTE msdb..sp ...”。 :100%完成结束进度进度:2012-04-14 19:21:30.09来源:重建索引任务执行查询“USE [MyDB]”。:0%完成结束进度错误:2012-04-14 19:21:30.12代码:0xC002F210源:重建索引任务执行SQL任务描述:执行查询“ALTER INDEX [MyTab1_PK] ON [dbo]。[MyTab1] ...”失败,出现以下错误:“联机索引操作只能在Enterprise中执行SQL Server版本。“可能的故障原因:查询问题,“ResultSet”属性设置不正确,参数设置不正确或连接未正确建立。结束错误DTExec:程序包执行返回DTSER_FAILURE(1)。开始于:7:21:27 PM完成时间:下午7:21:30经过:2.668秒。包执行失败。步骤失败了。

但是,如果我单独在桌子MyTab1上进行,那很好 我从列表中删除了MyTab1以进行重建,我将在另一个表上收到另一个错误消息的错误。

3 个答案:

答案 0 :(得分:3)

当您设置维护计划时,您需要确保取消选中重建索引子计划中的框,标题为:

  

重建索引时保持索引在线

我怀疑您或某人在创建/编辑维护计划时检查了该框,因为默认情况下不应该检查该框(这就是为什么手动重建索引时不会发生错误的原因。)

答案 1 :(得分:0)

回答你的问题,Index Rebuild会丢弃现有的Index并重新创建它,因此不需要使用reorganize(只能在索引的叶节点上运行)。

并且错误非常简单:"在线索引操作只能在SQL Server的企业版中执行。"

在线重建可以在企业版的SQL Server上联机使用,您的版本可能不是,所以只需将操作设置为不运行"在线"在你向导。

快速说明:在线重建,重建tempDB上的索引,使其在重建时可供查询使用。当操作需要花费大量时间并且您无法退出索引时,会使用它。#34;未使用"。

答案 2 :(得分:0)

我的问题是因为我有一个离线数据库,我预计在不久的将来会有所下降。删除数据库后,问题就消失了。