是否可以重建索引而不使实例脱机?

时间:2015-02-19 15:38:44

标签: sql-server sql-server-2008 tsql

我有一个NONCLUSTERED INDEX,总碎片占85.71%,页面丰满度为55.35%。

这可以在不使我的实例脱机而不是企业版的情况下完成吗?

TITLE: Microsoft SQL Server Management Studio
------------------------------

Rebuild failed for Index 'idx_last_success_download'.  (Microsoft.SqlServer.Smo)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.2500.0+((KJ_PCU_Main).110617-0038+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Rebuild+Index&LinkId=20476

------------------------------
ADDITIONAL INFORMATION:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

------------------------------

Lock request time out period exceeded. (Microsoft SQL Server, Error: 1222)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.2500&EvtSrc=MSSQLServer&EvtID=1222&LinkId=20476

------------------------------
BUTTONS:

OK
------------------------------

重组后:

ALTER INDEX idx_last_success_download ON dbo.TERMINAL_SYNCH_STATS 
REORGANIZE;

我仍然得到85.71碎片?

使用我的统计资料:DBCC SHOWCONTIG

DBCC SHOWCONTIG scanning 'TERMINAL_SYNCH_STATS' table...
Table: 'TERMINAL_SYNCH_STATS' (331148225); index ID: 38, database ID: 7
LEAF level scan performed.
- Pages Scanned................................: 7
- Extents Scanned..............................: 5
- Extent Switches..............................: 6
- Avg. Pages per Extent........................: 1.4
- Scan Density [Best Count:Actual Count].......: 14.29% [1:7]
- Logical Scan Fragmentation ..................: 85.71%
- Extent Scan Fragmentation ...................: 40.00%
- Avg. Bytes Free per Page.....................: 3613.9
- Avg. Page Density (full).....................: 55.35%

3 个答案:

答案 0 :(得分:0)

锁定超时不是版本问题

是的可能在线重建索引 你有一个锁定超时。我怀疑它是一个活动表,并且重建根本无法锁定。

尝试重新组织

Reorganize and Rebuild Indexes

答案 1 :(得分:0)

尝试使用指定选项WAIT_AT_LOW_PRIORITY运行重建 例如如下

ALTER INDEX idx_last_success_download ON dbo.TERMINAL_SYNCH_STATS
REBUILD WITH 
(    FILLFACTOR = 80, SORT_IN_TEMPDB = ON, STATISTICS_NORECOMPUTE = ON,
     ONLINE = ON (WAIT_AT_LOW_PRIORITY
         (MAX_DURATION = 4 MINUTES, ABORT_AFTER_WAIT = BLOCKERS ) ),
     DATA_COMPRESSION = ROW
);

有关详细信息,请参阅:https://msdn.microsoft.com/en-us/library/ms188388.aspx

答案 2 :(得分:0)

请注意,在任何情况下,您都不必使用SQL server database or SQL Server instance offline来重建任何索引。是,如果您有标准版ONLINE索引重建是不可能的,您必须确保应用程序或某些查询不访问该表,否则索引重建将失败

什么是

的输出
select @@Version

erorr消息

  

超出锁定请求超时时间。 (Microsoft SQL Server,错误:1222)

只说当索引重建任务试图在表上获得exlcusive锁时,因为在索引重建索引被删除并重新创建时,它无法获得错误消息。这不是一个威胁性的信息。在重建索引时,您可以在标准版和企业版中获得此消息。

索引重建是维护活动,因此在数据库负载相对较少时或在维护窗口期间应始终完成。

对于解决方案,尝试在没有正文访问数据库或laod时重建