SQL Server索引重建没有空格

时间:2013-11-29 16:24:53

标签: sql-server sql-server-2000

我在SQL Server 2000上有一个小数据库(最大2GB)(是的,我知道)。

问题是数据库已达到其大小限制,不能再增长。

查看表中有一个索引总计约950 MB,碎片超过30%,我想减少它。

进行索引重建(并重新组织 - 非常绝望)我收到错误消息,因为主要内容空间不足以创建页面。

我认为对于SQL Server的更高版本,我可以禁用索引然后重建,这不应该需要任何额外的空间,但是使用我的版本是不可用的。

关于在这种情况下如何重建索引的任何想法?


好的,接受建议放弃并重新创建。我唯一的问题是创造......!

请参阅下面的使用语句,SQL SMS不断为第9行附近的第9行抛出语法错误,不要认为它喜欢这些选项,这很奇怪,因为我很懒,并且得到了SMS来生成脚本本身来自原始索引......你可能已经注意到了,我不是DBA!

USE Database

GO

ALTER TABLE [db1].[_tbl]

ADD  CONSTRAINT [ck_unique] 

UNIQUE NONCLUSTERED 

(
    [DateID] ASC,
    [LRN] ASC,
    [Activity] ASC,
    [DateON] ASC
)

WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) 

ON [PRIMARY]

GO

告诉你什么,看看这些选项,我想我可以在不使用它们的情况下逃脱。大多数都不会默认申请吗?


欢迎来到我的工作方式!已经输入了上述声明但没有“with”部分。

现在查看SQL Server Manageblah上的GUI,我可以看到至少有一些选项没问题。

PAD_INDEX为Off,设置为重新计算统计信息,tempdb中的排序已关闭,因此:

我是否需要进行一些更改以反映其他选项?即:

IGNORE_DUP_KEY=OFF, ONLINE=OFF, ALLOW_ROW_LOCKS=ON, ALLOW_PAGE_LOCKS=ON

真的想去pub-> taxi-> home->现在睡觉!!!

1 个答案:

答案 0 :(得分:1)

如果要重新创建索引,可以使用

USE DATABASE

DECLARE @TableName varchar(255) 

DECLARE TableCursor CURSOR FOR 

SELECT table_name FROM information_schema.tables 

WHERE table_type = 'base table' 

OPEN TableCursor 

FETCH NEXT FROM TableCursor INTO @TableName 

WHILE @@FETCH_STATUS = 0 

BEGIN 

DBCC DBREINDEX(@TableName,' ',90) 

FETCH NEXT FROM TableCursor INTO @TableName 

END 

CLOSE TableCursor 

DEALLOCATE TableCursor

如果填写错误,请尝试

dbcc checkdb(DatabaseName,repair_allow_data_loss)

我一直在使用它来重新索引大小约为2 GB的数据库。希望这有帮助