Как вылечить базу sql

Как вылечить базу sql thumbnail

Alex_241
Member

Откуда:
Сообщений: 48

Добрый день. Помогите вылечить базу … вот лог при лечении DBCC CHECKDB(‘БАЗА’, REPAIR_ALLOW_DATA_LOSS)
Сообщение 8909, уровень 16, состояние 1, строка 1
Ошибка таблицы: идентификатор объекта 0, идентификатор индекса -1, идентификатор секции 0, идентификатор единицы размещения 4617878467915022336 (тип Unknown), идентификатор страницы (1:691417) содержит неправильный идентификатор страницы в заголовке страницы. PageId в заголовке страницы = (0:0).
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8939, уровень 16, состояние 98, строка 1
Ошибка таблицы: идентификатор объекта 0, идентификатор индекса -1, идентификатор секции 0, идентификатор единицы размещения 5423178376284209152 (тип Unknown), страница (28515:0). Тест (IS_OFF (BUF_IOERR, pBUF->bstat)) не прошел. Значения — 12584969 и -10.
Уровень исправлений для данной инструкции DBCC вызвал обход данного исправления.
CHECKDB обнаружил 0 ошибок размещения и 128 ошибок согласованности, не связанных ни с одним объектом.

…..

Сообщение 8928, уровень 16, состояние 1, строка 1
Идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data): не удалось обработать страницу (1:691448). Для получения подробных сведений просмотрите сообщения о других ошибках.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8980, уровень 16, состояние 1, строка 1
Ошибка таблицы: идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data). Узел индекса на странице (1:716228), область памяти 104 ссылается на дочернюю страницу (1:691448) и предыдущий дочерний элемент (1:691447), но они не были найдены.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8928, уровень 16, состояние 1, строка 1
Идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data): не удалось обработать страницу (1:691449). Для получения подробных сведений просмотрите сообщения о других ошибках.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8980, уровень 16, состояние 1, строка 1
Ошибка таблицы: идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data). Узел индекса на странице (1:716228), область памяти 105 ссылается на дочернюю страницу (1:691449) и предыдущий дочерний элемент (1:691448), но они не были найдены.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8928, уровень 16, состояние 1, строка 1
Идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data): не удалось обработать страницу (1:691450). Для получения подробных сведений просмотрите сообщения о других ошибках.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8980, уровень 16, состояние 1, строка 1
Ошибка таблицы: идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data). Узел индекса на странице (1:716228), область памяти 106 ссылается на дочернюю страницу (1:691450) и предыдущий дочерний элемент (1:691449), но они не были найдены.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8928, уровень 16, состояние 1, строка 1
Идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data): не удалось обработать страницу (1:691451). Для получения подробных сведений просмотрите сообщения о других ошибках.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8980, уровень 16, состояние 1, строка 1
Ошибка таблицы: идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data). Узел индекса на странице (1:716228), область памяти 107 ссылается на дочернюю страницу (1:691451) и предыдущий дочерний элемент (1:691450), но они не были найдены.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8928, уровень 16, состояние 1, строка 1
Идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data): не удалось обработать страницу (1:691452). Для получения подробных сведений просмотрите сообщения о других ошибках.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8980, уровень 16, состояние 1, строка 1
Ошибка таблицы: идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data). Узел индекса на странице (1:716228), область памяти 108 ссылается на дочернюю страницу (1:691452) и предыдущий дочерний элемент (1:691451), но они не были найдены.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8928, уровень 16, состояние 1, строка 1
Идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data): не удалось обработать страницу (1:691453). Для получения подробных сведений просмотрите сообщения о других ошибках.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8980, уровень 16, состояние 1, строка 1
Ошибка таблицы: идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data). Узел индекса на странице (1:716228), область памяти 109 ссылается на дочернюю страницу (1:691453) и предыдущий дочерний элемент (1:691452), но они не были найдены.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8928, уровень 16, состояние 1, строка 1
Идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data): не удалось обработать страницу (1:691454). Для получения подробных сведений просмотрите сообщения о других ошибках.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8980, уровень 16, состояние 1, строка 1
Ошибка таблицы: идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data). Узел индекса на странице (1:716228), область памяти 110 ссылается на дочернюю страницу (1:691454) и предыдущий дочерний элемент (1:691453), но они не были найдены.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Сообщение 8978, уровень 16, состояние 1, строка 1
Ошибка таблицы: идентификатор объекта 713157686, идентификатор индекса 1, идентификатор секции 72057694558224384, идентификатор единицы размещения 72057694573428736 (тип In-row data). Отсутствует ссылка на страницу (1:691455) с предыдущей страницы (1:691454). Возможна ошибка связывания цепочек.
Для исправления данной ошибки необходимо сначала исправить другие ошибки.
Имеется 5860508 строк на 148075 страницах для объекта «_AccumReg4411».
CHECKDB обнаружил 0 ошибок размещения и 260 ошибок согласованности в таблице «_AccumReg4411» (идентификатор объекта 713157686).

Пробывал копировать таблицы не получается, даже не получается для просмотра открыть таблицу _AccumReg4411, но база работает переодически вылетая(1С 8.1), как дольше с этим бороться?? что еще попробывать

Читайте также:  Трещина на лапе у собаки как вылечить
aleks2

Guest

1. Попробуйте начать делать бэкапы.

2. Этой таблицы у вас уже никогда не будет, но сохраните хоть остальные.

3. Тем более из названия «_AccumReg4411 следует, что это пересчитываемые (в теории, но кто мешает попробовать?) регистры.

ЗЫ. Я бы скопировал базу, в копии дропнул бы таблицу, прогнал бы dbcc и посмотрел: что скажет 1С?

SanyL
Member

Откуда: Москва
Сообщений: 4541

«идентификатор индекса 1» = кластерный индекс… ток бэкапы восстановят — либо имеете возможность пересчитатьперезалить табличку…

HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2940

aleks2
2. Этой таблицы у вас уже никогда не будет

ну почему же? еть возможность часть.части выдернуть

SanyL
Member

Откуда: Москва
Сообщений: 4541

HandKot
aleks2
2. Этой таблицы у вас уже никогда не будет

ну почему же? еть возможность часть.части выдернуть

?

HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2940

в условии where ставить условия для строк, которые еще можно прочитать

Alex_241
Member

Откуда:
Сообщений: 48

может есть возможность как то частично перенести таблицу?? подскажите может есть такие программы, кот. построчно копируют таблицы, поврежденых строк немного это регистр, тоесть записи можно будет востановить, как узнать время записи (период)??

Alex_241
Member

Откуда:
Сообщений: 48

бекапы есть и они делаются в них таже самая ошибка!!!! может попробывать как то в бекапе эти строчки удалить????

SanyL
Member

Откуда: Москва
Сообщений: 4541

Alex_241
бекапы есть и они делаются в них таже самая ошибка!!!! может попробывать как то в бекапе эти строчки удалить????

удалить в бэкапе строчки не получится… елси ошибка такаяже — то как сказал aleks2 «Этой таблицы у вас уже никогда не будет». Попробуйте его совет в «ЗЫ».

HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2940

Alex_241
может есть возможность как то частично перенести таблицу?? подскажите может есть такие программы, кот. построчно копируют таблицы, поврежденых строк немного это регистр, тоесть записи можно будет востановить, как узнать время записи (период)??

повторюсь еще раз.
1. смотрите по какому полю.полям сделан кластерный индекс
2. делате запрос select * from Mytable where ClustIndex <= что-то
3. если прошло нормально, то увеличиваете значение «что-то», если нет, то уменьшаете. Засекаете значение
4. делаете запрос select * from Mytable where ClustIndex >= что-то
5. если прошло нормально, то уменьшаете значение «что-то», если нет, то увеличиваете. Засекаете значение
6. зная значения шагов 3 и 5 выбираете данные из поврежденной таблицы в новую

таким образом можно определить те страницы, которые потеряли связь и Вы сможете считать часть данных

ЗЫЖ так восстановил у себя одну таблицу, правда часть таблицы ушло в небытиё
ЗЫЖЖ если лень, то совет от aleks2 самое то

komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5042

Alex_241
может есть возможность как то частично перенести таблицу?? подскажите может есть такие программы, кот. построчно копируют таблицы, поврежденых строк немного это регистр, тоесть записи можно будет востановить, как узнать время записи (период)??

выполни

select object_name(id) [tbl],name,indid,groupid,dpages,rowcnt
from sys.sysindexes
where id=object_id(‘_AccumReg4411’)
увидишь сколько записей в таблице

потом используя утилиту BCP
можно выливать данные построчно, используя ключи -F и -L

например, выливаем первые 100 записей

bcp.exe БАЗА.dbo._AccumReg4411 out file1-100.dat -SСЕРВЕР -T -n -F 1 -L 100
как попадешь на «битый» диапазон — дроби его пополам

HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2940

komrad , а это вообще отличная идея.
если не ошибась, то можно поставить размер батча (кол-во строк) в 1 и кол-во ошибок больше чем кол-во строк в таблице и все возможные данные выгрузить одним пакетом

Alex_241
Member

Откуда:
Сообщений: 48

komrad

что за утилита ВСР?? подскажи плиз

komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5042

Alex_241
komrad

что за утилита ВСР?? подскажи плиз

тынц

Alex_241
Member

Откуда:
Сообщений: 48

» а это вообще отличная идея.
если не ошибась, то можно поставить размер батча (кол-во строк) в 1 и кол-во ошибок больше чем кол-во строк в таблице и все возможные данные выгрузить одним пакетом»

komrad подскажи пожалуйста как написать такой код???

komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5042

Alex_241
» а это вообще отличная идея.
если не ошибась, то можно поставить размер батча (кол-во строк) в 1 и кол-во ошибок больше чем кол-во строк в таблице и все возможные данные выгрузить одним пакетом»

komrad подскажи пожалуйста как написать такой код???

для начала надо показать результат запроса, который я привел ранее 11558160

Alex_241
Member

Откуда:
Сообщений: 48

_AccumReg4411 _AccumR4411_ByPeriod_TRN 1 1 148330 5870088
_AccumReg4411 _AccumR4411_ByRecorder_RN 2 1 26650 5870088
_AccumReg4411 _AccumR4411_ByDims4424_RTRN 3 1 48549 5870088
_AccumReg4411 _AccumR4411_ByDims4425_RTRN 4 1 38460 5870088
_AccumReg4411 _WA_Sys_00000003_2A81EC36 5 0 0 0
_AccumReg4411 _WA_Sys_00000005_2A81EC36 6 0 0 0
_AccumReg4411 _WA_Sys_00000006_2A81EC36 7 0 0 0
_AccumReg4411 _WA_Sys_0000000A_2A81EC36 8 0 0 0
_AccumReg4411 _WA_Sys_0000000C_2A81EC36 9 0 0 0
_AccumReg4411 _WA_Sys_0000000D_2A81EC36 10 0 0 0
_AccumReg4411 _WA_Sys_00000009_2A81EC36 11 0 0 0
_AccumReg4411 _WA_Sys_0000000B_2A81EC36 12 0 0 0
_AccumReg4411 _WA_Sys_0000000E_2A81EC36 13 0 0 0
_AccumReg4411 _WA_Sys_00000011_2A81EC36 14 0 0 0
_AccumReg4411 _WA_Sys_00000012_2A81EC36 15 0 0 0
_AccumReg4411 _WA_Sys_00000013_2A81EC36 16 0 0 0
_AccumReg4411 _WA_Sys_00000004_2A81EC36 17 0 0 0
_AccumReg4411 _WA_Sys_00000010_2A81EC36 18 0 0 0

komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5042

Alex_241,

параметр «размер батча» используется только при импорте данных
поэтому надо использовать F & L

Пример скрипта, который сгенерирует тест батника для выливки данных из таблицы по 10000 записей.
Подставить свои значения в @db и @srv!

declare @tbl table(i int identity,cmd varchar(256))

declare @rows int — общее кол-во записей в таблице
declare @batch_size int — выгружаем по 10 тысяч записей
declare @i int — счетчик
declare @db varchar(100) — название БД
declare @srv varchar(100) — название Сервера

— инициализация переменных
select @srv=’СЕРВЕР’
select @db=’БАЗА’
select @rows=6000000
select @batch_size=10000
select @i=

— генерация состава батника
while @i<=@rows
begin
insert into @tbl(cmd)
select ‘bcp ‘+@db+’.dbo._AccumReg4411 out table_’+convert(varchar(10),@i+1)+’.dat -S’+@srv+’ -T -n -F ‘+convert(varchar(10),@i+1)+’ -L ‘+convert(varchar(10),@i+@batch_size)+’ > error_’+convert(varchar(10),@i+1)+’.dat’
select @i=@i+@batch_size
end

— вывод текста батника
select cmd from @tbl order by i
полученный текст занести в батник
выполнить
проанализировать error_*.dat файлы
найти проблемный диапазон
и выливать из него с меньшей гранулярностью, например, по 1000 записей

в общем — работа творческая 😉

Alex_241
Member

Откуда:
Сообщений: 48

большое спастбо буду пробывать… отпишусь

HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2940

Alex_241
обязательно отпишитесь, может понадобиться всегда

Alex_241
Member

Откуда:
Сообщений: 48

komrad, вообщем програмка сразу звкрывается после открытия, вот получившийся код… создается файл error_’+convert(varchar(10) … но он пустой

declare @tbl table(i int identity,cmd varchar(256))

declare @rows int — общее кол-во записей в таблице
declare @batch_size int — выгружаем по 10 тысяч записей
declare @i int — счетчик
declare @db varchar(100) — название БД
declare @srv varchar(100) — название Сервера

— инициализация переменных
select @srv=’Serverlider’
select @db=’kopia’
select @rows=6000000
select @batch_size=10000
select @i=0

— генерация состава батника
while @i<=@rows
begin
insert into @tbl(cmd)
select ‘bcp ‘+@db+’.dbo._AccumReg4411 out table_’+convert(varchar(10),@i+1)+’.dat -S’+@srv+’ -T -n -F ‘+convert(varchar(10),@i+1)+’ -L ‘+convert(varchar(10),@i+@batch_size)+’ > error_’+convert(varchar(10),@i+1)+’.dat’
select @i=@i+@batch_size
end

— вывод текста батника
select cmd from @tbl order by i

Alex_241
Member

Откуда:
Сообщений: 48

у меня на сервере виндовс 64 бита…2008

komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5042

Alex_241,

а эта команда работает вообще?

bcp kopia.dbo._AccumReg4411 out table_1.dat -SServerlider -T -n -F 1 -L 10000
надеюсь, что выполняешь её из командной строки и из специальной папки, а не из корня виндовс

Alex_241
Member

Откуда:
Сообщений: 48

komrad, извени за тупость, еще раз я создал этот батник и запускаю его, — -правильно?? или я его должен положить как ты говориш в спец. папку и оттуда запустить, раскажи подробней… еще раз спасибо за помощь))))))))))

komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5042

Alex_241
komrad, извени за тупость, еще раз я создал этот батник и запускаю его, — -правильно?? или я его должен положить как ты говориш в спец. папку и оттуда запустить, раскажи подробней… еще раз спасибо за помощь))))))))))

хм, ну давай что ли объясню как работать с командной строкой

если есть что-нить типа FAR-а — работай в нём
1) проверить место на доступных дисках
2) выбрать диск с бОльшим свободным местом (запомнить букву)
3) запустить FAR
4) перейти на выбранный диск
5) создать в его корне папку SQL_TEST
6) зайти в нее
7) выполнить в ней эту команду

bcp kopia.dbo._AccumReg4411 out table_1.dat -SServerlider -T -n -F 1 -L 10000 > err1.txt
8) показать здесь файл err1.txt

если FAR-а нет, то
1) повторить пп.1-2 из предыдущего списка шагов
2) запустить cmd.exe (кнопка Пуск-Выполнить)
3) выполнить команду X: ,где Х — выбранный диск
4) выполнить команду mkdir SQL_TEST
5) выполнить команду cd SQL_TEST
6) выполнить пп.7-8

Если пугает командная строка — читать книжку Фигурнова

Источник

Измерь его правильно! Краткое описание общепринятого метода оценки производительности DB серверов

55

Статья
Системный администратор

Нет файла

Бесплатно (free)

Администрирование данных 1С

Сообщество программистов (администраторов) 1С является одним из самых замкнутых на себя.
Тот же JAVA senior без особых вопросов напишет код на PHP или на Python, если этого потребует обстановка.
1Сники же и powershell и bash и PHP и все остальное с разной степенью успешности реализуют на 1С.
В последнее время ситуация немного меняется, классическое высшее образование программистов уже не ограничивается ассемблером, бейсиком и фортраном.
Никто не падает в обморок при виде
class HelloWorld {
public static void main(String[] args) {
System.out.println(«Hello World!»);
}
}
Попробуем покуситься на тест Гилева © и узнать, как без него обходятся DBA админы остального мира, слабонервных прошу удалиться, остальных прошу под кат…

28.10.2018   
8560   
capitan   
137   
   

Автоматизация тестирования

83

Статья
Программист

Нет файла

Бесплатно (free)

Тестирование и исправление

Статья будет полезна всем, кто интересуется вопросами автоматизации тестирования. Владимир Крючков рассказывает о наработанных методиках, которые успешно использует в своей практике, приводит примеры инструментов для эффективной автоматизации тестирования, делится опытом создания сценарных, интеллектуальных и юнит-тестов, а также рассматривает проблемы их использования и предлагает пути решения.

04.10.2018   
7800   
ivanov660   
23   
   

Авторизация с помощью сертификата ssl на nginx + Let’s Encrypt

6

Статья
Системный администратор

Нет файла

Бесплатно (free)

Администрирование данных 1С

Добрый день, вечер или ночь, все зависит от времени суток в который вам довелось прочитать мою статью.

В связи с ростом колличества корпаративных клиентов, было принято решение дать доступ к учетной системе внешним пользователям. Для самостоятельного оформления заказов и отслеживания их состояний. Реализация была создан web интерфейс с необходимым функционалом и доступом. Тут же стал вопрос безопасности, кроме стандартных пользователь-пароль было решено еще усилить безопасность, для этого применили OpenVPN, но появились клиенты, для которых нельзя применять OpenVPN (политики безопасности, нежелания и.д.), тут на глаза попались статьи про доступ по ssl сертификату.

22.02.2018   
5968   
kolianus   
1   
   

Как объять необъятное, или советы по тестированию

42

Статья
Программист

Нет файла

Бесплатно (free)

Тестирование и исправление

Я хочу рассказать про особенности тестирования больших решений. Почему речь пойдет именно об этом? Дело в том, что наша команда работала с фирмой 1С, и мы помогали им налаживать тестирование типовых конфигураций. Поэтому я прекрасно понимаю, что тем, кто поддерживает продукты фирмы 1С, помимо своих ошибок и проблем постоянно приходится сталкиваться также и со всеми ошибками и проблемами платформы, которых, как вы знаете, пока еще достаточно много.

В любом случае, когда речь идет про качество какого-то конечного продукта, который мы предоставляем пользователю, потенциальных проблем и рисковых зон у нас всегда хватает.

18.10.2016   
13553   
nrukol   
14   
   

Источник

Читайте также:  Как вылечить компьютер от трояна