Задача: Исправить ошибку при попытке выборки логической страницы или сбой выполнения запроса "ALTER INDEX…
Идентификация ошибки
1) Так выглядит ошибка в конфигураторе 1С, проявлялась при выгрузке dt.
Ошибка СУБД:
Microsoft OLE DB Driver for SQL Server: Ошибка при попытке выборки логической страницы (1:14065176) в базе данных 8.
Она принадлежит единице распределения 72057598119313408, а не 72057598048534528.
HRESULT=80004005, SQLSrvr: SQLSTATE=HY000, state=3, Severity=15, native=605, line=1.
или
2) Так выглядит ошибка в журнале событий
Ошибка при попытке выборки логической страницы (1:14065176) в базе данных 8.
Она принадлежит единице распределения 72057599555010560, а не 72057598048534528.
Выполнение данной инструкции было прервано.
Возможные причины сбоя:
Проблемы с этим запросом, свойство "ResultSet" установлено неправильно, параметры установлены неправильно или соединение было установлено неправильно.
В первую очередь надо определить название базы данных для идентификатора 8, который фигурирует в ошибке:
SELECT database_id, name FROM sys.databases;
Этот запрос вернет список всех баз данных и их идентификаторов на текущем сервере.
Предварительно делаем полную резервную копию базы данных средствами SQL
В нашем случае, мы столкнулись с проблемой при попытке изменить индекс _InfoRg94272_2X1 в таблице [dbo].[_InfoRg94272X1]. Для диагностики проблемы мы использовали следующий запрос, который помог нам получить подробную информацию об индексе (предварительно выбираем нашу базу, в которой была выявлена ошибка:
SELECT i.name AS IndexName, t.name AS TableName, c.name AS ColumnName, ic.key_ordinal AS KeyOrder, i.type_desc AS IndexType, i.is_unique AS IsUnique FROM sys.indexes i JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id JOIN sys.tables t ON i.object_id = t.object_id WHERE i.name = '_InfoRg94272_2X1';Результат запроса показал, что индекс существует, является кластерным и принадлежит таблице _InfoRg94272X1, при этом в запросе ALTER INDEX была указана таблица [dbo].[_InfoRg94272X1]
Решение проблемы
Необходимо удалить индекс:
DROP INDEX [_InfoRg94272_2X1] ON [dbo]._InfoRg94272X1;
После успешного удаления мы создадим его заново:
CREATE UNIQUE CLUSTERED INDEX [_InfoRg94272_2X1] ON [dbo]._InfoRg94272X1 ( [_Fld94273RRef], [_Fld94274], [_Fld94275], [_Fld94276], [_Period] );
Доверьте решение сложных технических проблем профессионалам Kamensky-lab. Мы обеспечим надежную диагностику и восстановление вашей базы данных 1С, минимизируя простои и повышая эффективность работы вашей системы. Наш опыт и индивидуальный подход гарантируют качественное обслуживание и поддержку вашего бизнеса.