|
DBCC REINDEX для всех таблиц
|
|||
---|---|---|---|
#18+
Я использую ASE 15. Восстановил БД из дампа. При работе с таблицами, выдается ошибка о "подозрительных индексах" (suspect indexes). Для перестройки индексов в таблице можно использовать команду DBCC REINDEX. Но у меня в базе около 100 таблиц с "подозрительными индексами". Есть ли возможность использовать данную команду для всех таблиц базы, вместо того, чтобы вручную прогонять команду по каждой таблице Я пробовал такой скрипт, но получил ошибку, что "Declare cursor must be the only statement in the query batch". Может, можно доработать данный скрипт? > --Script to automatically reindex all tables in a database > > USE DatabaseName --Enter the name of the database you want to reindex > > 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 > PRINT "Reindexing " + @TableName > DBCC DBREINDEX(@TableName,' ',90) > FETCH NEXT FROM TableCursor INTO @TableName > END > > CLOSE TableCursor > > DEALLOCATE TableCursor ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2006, 13:18 |
|
DBCC REINDEX для всех таблиц
|
|||
---|---|---|---|
#18+
icedeloffЯ использую ASE 15. Восстановил БД из дампа. При работе с таблицами, выдается ошибка о "подозрительных индексах" (suspect indexes). Для перестройки индексов в таблице можно использовать команду DBCC REINDEX. Но у меня в базе около 100 таблиц с "подозрительными индексами". Есть ли возможность использовать данную команду для всех таблиц базы, вместо того, чтобы вручную прогонять команду по каждой таблице Я пробовал такой скрипт, но получил ошибку, что "Declare cursor must be the only statement in the query batch". Может, можно доработать данный скрипт? > --Script to automatically reindex all tables in a database > > USE DatabaseName --Enter the name of the database you want to reindex > > 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 > PRINT "Reindexing " + @TableName > DBCC DBREINDEX(@TableName,' ',90) > FETCH NEXT FROM TableCursor INTO @TableName > END > > CLOSE TableCursor > > DEALLOCATE TableCursor выполни это и получишь скрипт Код: plaintext 1.
скрипт можно прогнать в любое время ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2006, 13:44 |
|
DBCC REINDEX для всех таблиц
|
|||
---|---|---|---|
#18+
Код: plaintext
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
А что в 15-ом синтаксис настолько поменялся? В 12.5.3 Код: plaintext 1.
Код: plaintext 1.
Да и с курсорами синтаксис другой. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2006, 19:51 |
|
DBCC REINDEX для всех таблиц
|
|||
---|---|---|---|
#18+
Новый топик открывать лень, так что опишу тут одни детские грабельки, на которые только что наступил, с пакетным DBCC REINDEX. Миграция с ASE 12.5 x86_64 на 15.5 ia64 с помощью dump-load Естественно, при таком раскладе многие индексы становятся в положение suspect DOL-таблица с unique clustered primary key: 4kk записей (по sp_spaceused). и несколькими индексами для Foreign Key. Делаю dbcc reindex этого primary key Checking table 'tablename' (object ID 1248004446): Logical page size is 8192 bytes. Checking partition 'tablename_1248004446' (partition ID 1248004446) of table 'tablename'. The logical page size of this table is 8192 bytes. One or more indexes are corrupt. They will be rebuilt. There are 4172112.000000 rows in 433220 pages for object 'tablename'. после чего dbcc reindex валится Msg 1105, Level 17, State 2: Server 'SRV', Line 1: Can't allocate space for object 'tablename' in database 'DBNAME' because 'default' segment is full/has no free extents. If you ran out of space in syslogs, dump the transaction log. Otherwise, use ALTER DATABASE to increase the size of the segment. DBCC execution completed. If DBCC printed error messages, contact a user with System Administrator (SA) role. После чего у меня в таблице остается ~20k записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 17:56 |
|
DBCC REINDEX для всех таблиц
|
|||
---|---|---|---|
#18+
blzz, Есть замечательные инструкции: Перестраивают статистику и индексы: Exec sp_MSForEachtable 'UPDATE STATISTICS ? WITH FULLSCAN' Exec sp_MSForEachtable 'ALTER INDEX ALL ON ? REBUILD;' ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 15:44 |
|
DBCC REINDEX для всех таблиц
|
|||
---|---|---|---|
#18+
Дмитрий_sqlblzz, Есть замечательные инструкции: Перестраивают статистику и индексы: Exec sp_MSForEachtable 'UPDATE STATISTICS ? WITH FULLSCAN' Exec sp_MSForEachtable 'ALTER INDEX ALL ON ? REBUILD;' а что, в Sybase ASE 15.5 уже появились недокументированные микрософтовские процедуры? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 19:11 |
|
DBCC REINDEX для всех таблиц
|
|||
---|---|---|---|
#18+
komradДмитрий_sqlblzz, Есть замечательные инструкции: Перестраивают статистику и индексы: Exec sp_MSForEachtable 'UPDATE STATISTICS ? WITH FULLSCAN' Exec sp_MSForEachtable 'ALTER INDEX ALL ON ? REBUILD;' а что, в Sybase ASE 15.5 уже появились недокументированные микрософтовские процедуры? Сорри. Это инструкции MS SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2012, 11:26 |
|
|
start [/forum/topic.php?fid=55&fpage=15&tid=2010126]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
34ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 194ms |
0 / 0 |