Имя: Пароль:
1C
1C 7.7
v7: ошибки в sql при DBCC CHECKDB
,
0 lucifer
 
02.03.12
11:42
Стоит sql 2000, в sql query analyzer выполняю DBCC CHECKDB
и кое где есть ошибки такого типа:

Server: Msg 2511, Level 16, State 1, Line 1
Table error: Object ID 2137058649, Index ID 2. Keys out of order on page (1:138448), slots 31 and 32.
Server: Msg 8928, Level 16, State 1, Line 1
Object ID 2137058649, index ID 3: Page (1:462439) could not be processed. See other errors for details.

похожий вопрос уже поднимался
Рушится база
там предлагалось снести индексы, но я в sql запросах вообще валенок, дайте пож рабочий код который снесет все индексы в таблицах.

Вообще все началось из-за того что ночью (когда перепроводится система) 2-й день подряд прерывается из-за ошибки, в логах такое:
Тип события:    Ошибка
Источник события:    MSSQLSERVER
Категория события:    (2)
Код события:    17052
Дата:        02.03.2012
Время:        2:18:45
Пользователь:        Н/Д
Компьютер:    UVSER
Описание:
Error: 7987, Severity: 22, State: 2
A possible database consistency problem has been detected on database 'Uvservice'.  DBCC CHECKDB and DBCC CHECKCATALOG should be run on database 'Uvservice'.




P.S.
вчера попробовал создать новую bd выгрузил backup и загрузил в новую bd, проблему это не решило.
1 dk
 
02.03.12
11:47
через maintaince plan запусти полную переиндексацию
если дело только в индексах, то все нормуль будет
2 lucifer
 
02.03.12
11:51
(1) это где "maintaince plan"
3 lucifer
 
02.03.12
11:55
(1) нашел
4 Sh1ko
 
02.03.12
11:55
В enterprise manager - management - database maintaince plan
5 Sh1ko
 
02.03.12
11:55
Можно так же через QA
6 lucifer
 
02.03.12
11:58
(5) в смысле кодом?
7 Sh1ko
 
02.03.12
11:59
(6) да
8 lucifer
 
02.03.12
12:00
(7) это предпочтительней, есть код?
9 Sh1ko
 
02.03.12
12:03
DBCC DBREINDEX
10 ЧеловекДуши
 
02.03.12
12:03
--Переиндексация БД
USE <название БД>
EXEC _1sp_DBReindex

--Проверка на битость самой БД
DBCC CHECKDB ('<название БД>',REPAIR_REBUILD)

--Установка монопольного доступа к БД
sp_dboption '<название БД>','single user',true

sp_dboption '<название БД>','single user',false

--Смена владельца БД
use <название БД>
EXEC sp_changedbowner 'SA'
11 Lionee
 
02.03.12
12:03
ИНДЕКСАЦИЯ  

sp_dboption 'имябазы','single user',true
USE имябазы
EXEC _1sp_DBReindex
sp_dboption 'имябазы','single user',false


                                                                            ВОССТАНОВЛЕНИЕ БАЗЫ ДАННЫХ 1С

DBCC CHECKDB ('NEW_DATABASE',REPAIR_REBUILD)

                                                                            ВОССТАНОВЛЕНИЕ БАЗЫ ДАННЫХ 1С
                                                                       только с исправлением глобальных огшибок                        
                                                                           может быть частичная потеря инфомации
sp_dboption 'имябазы','single user',true
DBCC CHECKDB('имябазы',REPAIR_ALLOW_DATA LOSS)
sp_dboption 'имябазы','single user',false


                                                                  ДЕФРАГМЕНТАЦИЯ ИНДЕКСОВ БАЗЫ ДАННЫХ 1С

USE имябазы
DECLARE @MyTable varchar (32)
DECLARE @MyIndex varchar (32)
DECLARE MyCursor CURSOR FOR
SELECT o.name,i.name
FROM sysobjects o INNER JOIN sysindexes i ON o.id=i.id
WHERE (o.xtype='U') AND (INDEXPROPERTY(i.id,i.name,'isStatistics')=0)
AND (i.dpages>0)
ORDER BY o.name, i.indid
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex
WHILE @@FETCH_STATUS=0
BEGIN
PRINT 'ДЕФРАГМЕНТАЦИЯ ИНДЕКСА'+@MyIndex+'из таблицы'+@MyTable
DBCC INDEXDEFRAG (0,@MyTable,@MyIndex)
FETCH NEXT FROM MyCursor INTO @MyTable, @MyIndex
END
CLOSE MyCursor
DEALLOCATE MyCursor
12 lucifer
 
02.03.12
17:05
(11) хм... QA пишет ошибку
Server: Msg 170, Level 15, State 1, Line 4
Line 4: Incorrect syntax near 'Uvservice'.

Uvservice - это bd

выполняю этот код
sp_dboption 'Uvservice','single user',true
USE Uvservice
EXEC _1sp_DBReindex
sp_dboption 'Uvservice','single user',false
13 lucifer
 
02.03.12
17:14
просто так
USE Uvservice
EXEC _1sp_DBReindex

работает
14 lucifer
 
02.03.12
17:47
прервалось с ошибкой:
CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 1. Most significant primary key is '76343'.
The statement has been terminated

насколько я понял ругается на какой-то дубликат, как можно поудалять эти дубликаты?
15 lucifer
 
02.03.12
17:56
(12) надо было EXECUTE перед sp_dboption
16 lucifer
 
02.03.12
18:16
(9) ругается на неправельный синтаксис, в google не нашел
17 Ёпрст
 
02.03.12
18:22
18 Ёпрст
 
02.03.12
18:22
скажем так, ты и не искал вовсе.
19 lucifer
 
02.03.12
18:29
(18) а ну эт я видел.
Я имел ввиду код для выполнения DBCC DBREINDEX что бы имя таблицы вставало само.
я ради интереса попробовал для одной таблицы
DBCC DBREINDEX _1SACCS
ругается
Line 1: Incorrect syntax near '_1SACCS'.
20 Ёпрст
 
02.03.12
18:33
(19) так ты еще и читать не умеешь ?
Там даже пример есть готовый, не говоря уже о синтаксисе всей конструкции
21 lucifer
 
02.03.12
18:36
(20) извиняюсь, счас буду пробовать
22 lucifer
 
02.03.12
18:37
а вот как сделать что бы автоматом пройтись по всем таблицам BD
23 Ёпрст
 
02.03.12
18:38
(22) либо запустить готовую хранимку, либо написать её самому.
24 Ёпрст
 
02.03.12
18:38
ЗЫ: тебе выше уже написали её имя, если че..