Не вдалося спробувати отримати логічну сторінку (5: 65424) у базі даних 2


11

Я отримую наступні дані SqlExceptionпро виклик збереженої процедури:

Не вдалося спробувати отримати логічну сторінку (5: 65424) у базі даних 2. Він належить до одиниці розподілу 7349876362857938944, а не до 4899918190390149120.

System.Data.SqlClient.SqlException відбулося
Повідомлення = "Спроба отримати логічну сторінку (5: 65424) у базі даних 2 не вдалася. Вона належить до блоку виділення 7349876362857938944 не до 4899918190390149120.

Source = ". Чистий постачальник даних SqlClient"
ErrorCode = -2146232060
Клас = 21
LineNumber = 257
Число = 605
Процедура = "ispDisplayCount"
Server = "10.10.1.1"
Стан = 3

Що означає цей виняток? Чи є якесь вирішення вищезазначеного питання?

Хоча база даних, на яку посилається помилка вище, вказує на tempdb, аналогічні помилки, що посилаються на повідомлення 605, можуть бути виправлені за допомогою наведених нижче відповідей.

Помилка 605, рівень 21, стан 3, рядок 1
Спроба отримати логічну сторінку (1: 8687634) у базі даних 7 не вдалася. Належить до одиниці розподілу 72057594364821504, а не до 72057594052476928.

Відповіді:


11

Якщо ідентифікатор бази даних, позначений повідомленням про помилку, є 2, на яку впливає база даних tempdb. Один з методів виправлення цього типу пошкодження в tempdb - це просто перезапустити екземпляр SQL Server. Для ідентифікатора бази даних, відмінного від 2, дотримуйтесь рекомендацій нижче.

Можливо, вам знадобиться відновити з резервної копії, проте спробуйте це:

Як член ролі sysadmin, виконайте DBCC PAGE (2, 5, 65424, 3);та шукайте Metadata: IndexIdзначення.

  • Якщо це 0(купа) або 1(кластерний індекс), вам потрібно відновити з резервного копіювання.
  • Якщо це НЕ 0 або 1, ви можете просто відновити , НЕ кластерний індекс.

Запустіть команду DBCC і повідомте нам, що ви знайдете. Перевірте https://www.mssqltips.com/sqlservertip/1578/using-dbcc-page-to-examine-sql-server-table-and-index-data/ для детальної інформації про DBCC PAGEкоманду


10

Ваша база даних пошкоджена. Час відновлення з гарного резервного копіювання. Якщо у вас немає резервних копій, час дізнатися про важливість тестування плану відновлення . Також гарантується розслідування надійності вашого обладнання, слідкуйте за попередженнями та помилками в системних журналах.


9

Помилка вказує на пошкодження вашої бази даних. Хороша новина полягає в тому, що ІД бази даних 2 вказує, що це база даних tempdb, тому виправити це легко - просто перезавантажте екземпляр бази даних.

Перезавантаживши примірник, слід з’ясувати, чому сталася пошкодження. Почніть з запуску chkdskна диску, на якому увімкнено файл проблеми. Далі вам потрібно буде ознайомитись із самим сховищем та побачити, чи є там якісь проблеми. Можливо, проблема з фізичним диском може бути драйверами картки HBA або RAID тощо.


Денні, чи вважаєш ти, що також перевірка стану оперативної пам'яті буде корисною? Ви бачили, як пошкоджена сторінка в оперативній пам'яті також перетворюється на корупцію на диску?
Алі Разегі

1
Якщо є погана паличка оперативної пам’яті, яка може спричинити повідомлення про сторінку як брудну. Шанси набагато вище, що це проблема з дисковою підсистемою, ніж пам'ять. Це було б наступне місце, щоб подивитися, чи диски насправді добре.
mrdenny

2

Я зміг вирішити це, очистивши кеші SQL:

DBCC FREEPROCCACHE
GO
DBCC DROPCLEANBUFFERS
GO

Мабуть, перезапуск служби SQL мав би такий же вплив.

(через Made By SQL , відтворений тут, щоб допомогти іншим!)


1

У моєму випадку рішенням із скорочення та повторного заповнення даних у відповідних таблицях було рішення.

Найімовірніше, дані всередині таблиць були пошкоджені.


1

Що ви чуєте від багатьох людей, це « база даних пошкоджена, вам потрібно відновити », навіть не рекомендуючи вам брати кілька хвилин, щоб виконати щось із наступного; перегляньте свої журнали, з’ясуйте, коли виникла проблема вперше, помилка, що передувала цьому рядку, перевірте базу даних / таблицю, до якої належить сторінка

У моєму випадку ця помилка була допущена;

Неможливо знайти запис індексу в індексі ID 9 таблиці 629577281 в базі даних "XYZ". Зазначений індекс пошкоджений або є проблема з поточним планом оновлення

Приблизним завданням було простежити зазначений індекс та тимчасово видалити його.

Пізніше я знайшов це посилання Microsoft, яке описує мою точну проблему та пропонує посилання на рішення

сподіваюся, що це допоможе комусь іншому в майбутньому

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.