MSSQL2000,如何才能在不锁表的情况下完成对索引的重建工作。
RT,请各位兄弟姐妹给个解决方案。多谢。
------解决方案--------------------怎么貌似我的图标,刚进来,我还以为是我发的帖子呢。
------解决方案--------------------关注
------解决方案--------------------
------解决方案--------------------DBCC不行吗?
SQL code
DBCC CHECKDB 不仅仅会修复索引,检查指定数据库中的所有对象的分配和结构完整性。
对于数据库中每个表,DBCC CHECKDB 检查其:
索引和数据页是否已正确链接。
索引是否按照正确的顺序排列。
各指针是否一致。
每页上的数据是否均合理。
页面偏移量是否合理。
所以关键在于你是否只是希望重建索引,如果这样的话,可能使用下面的更好点:
DBCC DBREINDEX('database_name.owner.table_name',index_name,fillfactor)
------解决方案--------------------
一般在比较空闲时间操作吧,像论坛升级,数据升级等都是等到空闲时间的,不过楼主的研究精神是要学习的.
------解决方案--------------------
sql2k下,楼主的这个要求应该是不能完成的。
------解决方案--------------------
------解决方案--------------------
银行系统都有停的时候.总有个时间可以停吧.
------解决方案--------------------
------解决方案--------------------
一般情况下,oracle可以用rebuild方式重建索引, 而不要先drop再create.
因为rebuild下,旧索引会保留到重建工作完成后才删除的。
------解决方案--------------------
sql 2000 无法实现.
sql 2005/2008 可以用REBUILD WITH ONLINE = ON 在索引操作期间不持有长期表锁.
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
不是不锁,是不长期占用锁,理论上是每隔 5 分钟向有一次向用户报告进展,可以任意中断执行,并且已经执行的都将保存。
如果数据量不大那是华得来的,比重建快得多,如果量大可以尽量空闲时分多次执行
------解决方案--------------------
我就是说嘛
------解决方案--------------------